- 线程概念
1.一个进程可以有多个线程至少有一个线程
2.生命周期:创建 就绪 运行 死亡
- 创建线程
1.创建线程 继承Thread类 实例化 不建议使用耦合性高!功能内聚 模块耦合应该低
2.继承接口Runable 通过Thread类构造创建线程 可设置线程名
3.继承接口Callable 只能在线程池中作为线程任务使用
PS:线程通常配合while使用
- 线程使用
1.start() 线程就绪 ,cpu随机分配执行权
设置执行权优先级.setPriority() 范围1-10 默认5
2.join()此方法和之前就绪线程交替执行完后面线程才会执行
3.sleep()休眠状态 参数毫秒
4.setDaemon()设置此线程为守护线程 赋值验证其他线程 执行任务的线程只有守护线程则无效
- 对象锁
1.关键字 synchronized 可以包装方法 非静态监听器可以是this 静态方法监听器是类的类名..class
2.Lock 实现类ReentrantLock() 上锁lock 释放 unlock 包装方法一样写在方法里
- 死锁
1.代码逻辑上错误 外层拿不到子锁不释放 即嵌套锁对象 最好方法是纠正逻辑错误
- 连接池Executors类
.ExecutorService ex = Executors.newFixedThreadPool(10); 构造方法线程数
.ExecutorService service = Executors.newCachedThreadPool();无构造放方法 线程根据需求创建释放
方法自己点 简明知义submit 提交线程任务(无有返回值Futrue) 销毁线程池shutdown()实际开发中不会销毁