从本篇开始,我们将会逐渐总结关于java并发这一块的内容,也可以理解为是我的笔记,主要来自于一些博客和java书籍中的内容,所有的内容都是来自于他们之中并且加上了我自己的理解和认识。
我们将会从以下的几点理解java线程的一些概念:
线程的基本概念和优劣之处
创建一个线程的两种方式
线程的属性
线程的状态
synchronized可修饰的方法
synchronized的重要特性
一、线程的基本概念
在计算机中有进程和线程这么两个概念,进程中可以有多个线程,它们是从属关系,进程往往更像是资源的占有者,线程才是程序的执行者,多个线程之间共享着进程中的资源。一个cpu同时只能运行一个线程,每个线程都有一个时间片,时间片用完了就会被阻塞并让出CPU的控制权,交给下一个线程使用。这样在计算机中就可以实现多任务的假象,其实CPU在不断的切换线程,好像多个任务在同时运行。
使用线程的优势毋庸置疑,可以增加CPU的执行效率,一旦某个线程需要等待某种资源(例如:等待打印机),就可以将它阻塞释放CPU让CPU执行别的线程,而不需要让CPU和此线程一起等待某种资源从而提高系统效率,另外一点就是可以用这种假象增加用户体验度。但是,CPU在切换不同线程之间所要花费的代价也是不可忽视的,在较为复杂的程序中这种劣势可能九流一毛,但是如果在简单的程序中就会显得尤为突出。
二、创建一个线程
接下来我们看看如何在java中创建一个线程来实现多个线程同时运行。第一种方式,java 中有一个类Thread,我们只要继承这个类并重写他的run方法,调用start方法就可以启动一个新的线程了。(没见过的同学可能不能理解以下代码,下面我会解释)
/*声明自己的一个线程类*/public class Test_thread extends Thread { //重写Thread类中的run方法
public void run(){ System.out.println("i am the thread");
}
}
public class Test_Class {
public static void main(String[] args){ Test_thread thread = new Test_thread();
&nbs