一、多线程
二、并发和并行
三、实现方式
1、第一种方法
2、第二种方法
3、第三种方法
四、Thread中常见的成员方法
守护进程
五、线程的生命周期
六、线程安全的问题
将同步代码块中的方法变成同步方法:
想要手动的打开锁和关闭锁,JDK5后提供了一个新的锁对象lock:
使用try catch finally实现lock锁:
七、死锁
注意避免让锁嵌套
八、生产者和消费者
消费者:
生产者:
桌子:
测试用例:
生产者:
消费者:
测试用例:
九、线程的6种状态
综合练习:
1、
2、
3、
升级版解决方法:
4、
重点是要返回线程的结果,即每个线程获取的最大值,因此我们用第三种创建线程的方法,这个方法就可以返回线程的运行结果
十、线程池
细节:
提交的任务被安排的顺序是:核心线程->等待队列->临时线程->拒绝策略
1、创建临时线程:当核心线程被占用并且排队队列中已排满时,会创建临时线程处理任务;
2、先提交的任务优先处理吗?不是,有可能先提交的任务进入等待队列,后提交的任务创建临时线程运行
自定义线程池:
最大并行数:
线程池多大合适?