线程的基本概念
◈ Java的线程是通过 java.lang.Thread 类来实现的。
◈ VM启动时会有一个由主方法 ( public static void main() {} ) 所定义的线程。
◈ 可以通过创建 Thread 的实例来创建新的线程。
◈ 每个线程都是通过某个特定的 Thread 对象所对应的方法 run() 来完成其操作的,方法 run() 称为线程体。
◈ 通过调用 Thread 类的 start() 方法来启动一个线程。
线程的创建和启动
◈ 可以有两种方式创建新的线程。
第一种:
◇ 定义线程类实现 Runnable 接口
◇ Thread myThread = new Thead(target) //target 为 Runnable 接口类型
◇ Runnable 中只有一个方法:
public void run(); //用以定义线程运行体
◇ 使用 Runnable 接口可以为多个线程提供共享的数据
◇ 在实现 Runnable 接口的类的 run 方法定义中可以使用 Thread 的静态方法
public static Thread currentThread() //获取当前线程的引用
第二种:
◇ 可以定义一个 Thread 的子类并重写其 run 方法如:
class MyThread extends Thead {
public void run() {...}
}
◇ 然后生成该类的对象:
MyThread myThread = new MyThead(...)
线程控制基本方法:
方法 功能
isAlive() 判断线程是否还“活”着,即线程是否还未终止
getPriority() 获得线程的优先级数值
setPriority() 设置线程的优先级数值
Thread.sleep() 将当前线程睡眠指定毫秒数
join() 调用某线程的该方法,将当前线程与该线程“合并”,即等待该线程结束,在恢复当前线程的运行
yield() 让出CPU,当前线程进入就绪队列等待调度
wait() 当前线程进入对象的 wait pool
notify()/notifyAll() 唤醒对象的 wait pool 中的一个/所有等待线程