多线程
1.实现多线程的方式
1.1 继承Thread类
public class Thread implements Runnable{}
1.2 实现Runnable接口
创建一个实现实现了Runnable的类;
这个类去实现抽象方法run();
创建这个类的实例对象,把这个对象作为参数传递到Thread类的构造器中,创建Thread类的对象;
通过Thread类的对象去调用start()方法。
1.3实现Callable接口
1.4使用线程池
2.Thread类中的常用方法
start():启动当前线程,调用当前线程的run();
run():通常要被重写,将创建的线程要执行的操作声明在此方法中;
currentThread():静态方法,返回当前执行的线程;
yield():释放当前线程CPU执行权;
join():在线程A中调用线程B的join(),此时A线程进入阻塞状态,直到线程B执行完之后线程A才结束阻塞状态;
stop()已过时 ,强制结束当前线程;
sleep():让当前线程休眠,此时该线程为阻塞状态;
isAlive():判断当前线程是否存活。
wait() / notify() /notifyall() 此三个方法定义在Object类中
3.线程的优先级
MAX_PRIORITY:10
MIN_PRIORITY:1
NORM_PRIORITY:5
getPriority():获取线程的优先级
setPriority():设置线程的优先级
4.线程的生命周期
**新建:**当一个Thread类或者其子类的对象声明并创建时,新生的线程对象为新建状态;
**就绪:**当新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已经具备了运行条件,只是没有分 配到CPU资源;
**运行:**当就绪的线程被调用并获得CPU资源时,便进入了运行状态,run()方法定义了线程的操作和功能;
**阻塞:**在某种特殊的情况下,被人为挂起或者执行输入输出操作时,让出CPU并临时中止自己的执行,进入阻塞状 态;(阻塞状态不是一个线程的最终态)
**死亡:**线程完成了它的全部工作或者提前强制性中止或者出现异常导致结束。