1. 相关概念:

  • base::进程
  • base::线程
    • 不同线程可以执行相同的run()

1.2. 垃圾线程:

如果线程对象被赋值其他线程对象的引用, 则之前的那个线程就是垃圾线程, 一段时间后会被Java回收

2. 线程的目标对象:

即实现了run()方法的对象

3. 线程对象:

即用对象来表示一个线程

3.1. 线程对象中的常用方法与属性:

name属性 为线程对象的名字 start()⭐ 启动线程, 并运行线程目标对象的run()方法 wait()方法, 中断当前线程run()方法, 等待别的线程调用notify() notifyAll()方法, 通知所有等待中的线程, 使其运行 notify()方法, 通知指定线程, 使其运行 isAlive() 判断当前线程是否在执行run()方法 sleep(毫秒) 使当前线程睡眠一段时间 线程对象A.interrupt() 叫醒线程对象A的sleep, 使其产生异常InterruptedException 故sleep一般要套一层try-catch

4. Java的多线程机制

Java虚拟机可以快速的轮流执行多个线程

4.1. Java中的主线程:

main方法即为主线程

4.2. 线程的调度与优先级:

Java虚拟器中有线程调度器, 其把线程的优先级分为10个级别, 分别用Thread类中的常量类表示

5. 创建线程

5.1. 法一(不常用): 继承Thread

编写一个继承Thread的子类, 并要重写Thread的run()方法

5.2. 法二(常用): 用Thread类实例化线程对象

直接使用Thread类的构造方法创建一个对象 给构造方法传递一个实现Runnable接口的实例对象, 线程开始时, 会自动调用传入对象中的run()方法

6. Thread线程类

6.1. 类中常用静态方法:

Thread.currentThread() 得到当前所执行的线程对象

7. 线程同步:

使用synchronized关键字修饰是某个方法, 使其在不同线程中保持同步