这章主要介绍并行
首先区分进程和线程,进程通常独占计算机的全部资源,不共享内存,线程共享内存,每个应用至少有一个线程
java创建线程有俩种方法,一种是直接继承thread类,重写run方法,另一种是实现runable接口,实现run方法,启动线程时应该调用start方法
java提供了interrupt方法来中断线程,但实际上代码收到信号并不会停止运行,但当线程正处于sleep时接到interrupt信号会抛出异常,为了不无视interrupt信号,我们可以用while或者if语句判断一下是否收到信号,决定是否退出
多线程可能会有很多安全隐患,线程安全的四个策略分别是
- 限制数据共享:核心思想就是线程之间不共享mutable类型数据,如果数据不共享的话,对数据来说程序就是单线程的了,保证了安全性
- 共享不可变的数据类型:这个也很好理解,如果数据类型不可变,各个线程也无法修改
- 共享线程安全的可变数据类型:如果一定要使用可变数据类型的话,应该使用线程安全的
- 同步和锁:锁机制很有价值,他保证了对数据的独家享用,其他进程无法访问
但是使用锁机制时要避免出现死锁,就是两个锁互相限制,应该避免这种情况