本章介绍了并发编程的基础知识 — Java 多线程机制,知识点如下所示:
- 线程是系统中的最小执行单元;同一进程中有多个线程,线程间可以共享资源;
- 自定义线程类有两种方式:实现 Runnable 接口,或继承 Thread 类。由于企业项目都采用面向接口的编程开发,因此建议使用前者;
- 线程的逻辑代码写在 run() 方法中,但是启动线程的方法是 start() 方法;
- 线程的生命周期可以分为新建、就绪、运行、阻塞、死亡 5 个阶段,能清楚表达生命周期的流程;
- 多线程数据共享会存在数据不合理、不正确和不安全性,因此需要考虑线程同步处理。
- 线程同步处理,需要使用 synchronized 关键字,方式有两种:同步代码块和同步方法;
- 线程的同步处理需要采用对象锁进行操作,对象锁的对象可以是任何对象。
- 线程协作可以通过 wait() 和 notify() / notifyAll() 方法进行通信,并且这三个方法都必须写在被 synchronized 修饰的代码块中,否则会抛出异常。
两种实现方式:继承thread类、实现runable接口
多线程的处理逻辑在run方法中,但是实际启动时需要采用start来间接调用run,juin是加入线程,yield和sleep比较像sleep是让当前线程休眠终止,其他优先级不论的线程都能用,但yield得优先级高的才能用。