首页 > 代码库 > 线程--概念
线程--概念
1. 首先是线程的sleep和yeld
sleep会阻塞当前线程,使所有优先级的线程都可以获取执行机会,但并不释放当前线程已经获得的锁
yeld,线程回到可执行状态,同优先级的线程才可获取执行机会,不释锁
还有两个经常放一块对比:
- wait,它释放已经占有的锁,等待唤醒,notify唤醒后进入锁池等待获取锁标记,获取后变为可执行状态等待cpu调度执行
- join,当前线程0获取另一个线程1对象的对象锁(synchronized),如果线程活着就wait(),直到线程结束(自动notify)
join(1000)并不能真实表现当前线程等待1000毫秒,解释下,join(1000)后,
线程0还没有获取线程1对象锁,如果有其它线程3获得线程1对象锁,线程0就阻塞在synchronized
2. 线程状态
public enum State { //线程刚创建 NEW, //start,在JVM中正在运行的线程 RUNNABLE, //线程处于阻塞状态,等待监视锁,可以重新进行同步代码块中执行 BLOCKED, //调用join() wait()方法
WAITING,
//调用sleep(时间) join(时间) wait(时间)方法
TIMED_WAITING,
//线程执行完毕,已经退出
TERMINATED;
}
参考文章:
1. java 线程的几种状态
2. Java编程体验:线程的7种状态及相互转换(图)
3. [Java并发编程]-线程的六种状态及其状态转换
线程--概念
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。