基本概念:
并发性和并行性:
并发性指的是同一时刻只能有一条指令执行,但是多个进程指令被快速轮换执行
并行性是指同一时刻,有多条指令在多个处理器上同时执行,使得在宏观上具有多个进程同时执行的结果
临界区:修改共享资源的代码区
1、线程实现有三种方式:
(1)类ThreadName(引用为a)继承Thread,然后调用a.start();
(2)类ThreadName(引用为b)实现接口Runnable,然后new Thread(b).start();
(3)类ThreadName(引用为c)实现接口Callable<Integer>,然后call方法作为执行体,会有返回值。
声明FutureTask<Integer> task = new FutureTask<Integer>(c);
Thead thread = new Thread(task).start();
一般采用实现接口的方式实现,有以下有优点:
使用实现Runnable接口和Callable接口的可以继续实现其他接口或继承
在这种方式下,多个线程可以共享一个target对象(共享线程类的实例属性),所以非常适合多个相同线程处理同一份资源的情况 实现Runnable和Callable的最大区别在于Callable是调用call方法,有返回值的
2、线程的生命周期:新建、就绪、运行、阻塞、死亡
线程在以下三种方式之一结束后就会处于死亡状态
(1)run()方法执行完成,线程正常结束
(2)线程抛出一个未捕获的Exception或Error
(3)直接调用该线程的stop()方法来结束该线程——该方法很容易导致对象受破坏,通常不推荐使用
3、线程的一些方法
join():等待另一线程执行完才执行
sleep():睡眠,不会释放对该同步监视器的锁定
…… …… 余下全文