基础知识

多线程

2017-03-04  本文已影响0人  Suavitygogo

程序启动后变为进程,进程由单或多个线程组成。

多线程:并行,共享资源,实现多任务。

五个状态:新建,就绪,运行,阻塞,死亡

JVM的线程调度模式采用了抢占式模式,即根据线程的优先级来获取CPU的使用权。

主线程:JVM调用程序main()所产生的线程。

当前线程:一般指通过Thread.currentThread()来获取的进程。

后台线程:指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。

前台线程:是指接受后台线程服务的线程,其实前台后台线程是联系在一起,就像傀儡和幕后操纵者一样的关系。傀儡是前台线程、幕后操纵者是后台线程。由前台线程创建的线程默认也是前台线程。

创建多线程的方法:Thread类实际上也是实现了Runnable接口的类

a.实现Runnable接口,实现run方法<线程体>,调用方式:new Thread(new MyRunnable()).start();

b.继承Thread类,重写run方法<线程体>,调用方式:new MyThread().start();

常见方法:

start():新建的线程进入Runnable状态

run():线程进入Running 状态

isAlive():是否在活动状态,如果线程已经启动且尚未终止,则为活动状态。如果是活动状态,返回 true;否则 false

wait():JVM会把该线程放入等待池中,线程进入等待状态,等待被notify,这是一个对象方法,而不是线程方法

notify() / notifyAll():唤醒其他的线程,这是一个对象方法,而不是线程方法

yield():线程放弃执行,使其他优先级不低于此线程的线程有机会运行,它是一个静态方法

getPriority() / setPriority():获得/设置线程优先级(1->10),默认5

sleep():JVM会把该线程置为阻塞状态,线程睡眠指定的一段时间

join():JVM会把该线程置为阻塞状态,调用这个方法的主线程,会等待加入的子线程执行完成

setDaemon(thread):设置后台线程(守护线程)

同步机制:控制资源的一致性,加锁

synchronized: 同步方法和对象

volatile:同步变量<除final常量外其余均可修饰>

上一篇下一篇

猜你喜欢

热点阅读