java多线程之(sleep)
来源:互联网 发布:出租屋 知乎 编辑:程序博客网 时间:2024/04/29 05:45
java的Thread.sleep()相当于让线程睡眠,交出CPU,让CPU去执行其他的任务。 但是有一点要非常注意,sleep方法不会释放锁,也就是说如果当前线程持有对某个对象的锁,则即使调用sleep方法,其他线程也无法访问这个对象。看下面这个例子就清楚了:
package nc.com.thread.traditional.example;/*** @ClassName: TestSleep * @Description: TODO(这里用一句话描述这个类的作用) * @author A18ccms a18ccms_gmail_com * @date 2015-12-19 下午06:41:58 **/public class TestSleep { private int i = 10; private Object object = new Object(); public static void main(String[] args) throws Exception { TestSleep test = new TestSleep(); MyThread thread1 = test.new MyThread(); MyThread thread2 = test.new MyThread(); thread1.start(); thread2.start(); } class MyThread extends Thread{ @Override public void run() { //只要有一个线程获得了对象锁,则在当获得线程锁的线程sleep时,其他线程不能获取对象锁,只能一直等待 synchronized (object) { i++; System.out.println("i:"+i); try { System.out.println("线程"+Thread.currentThread().getName()+"进入睡眠状态"); Thread.currentThread().sleep(10000); } catch (InterruptedException e) { // TODO: handle exception } System.out.println("线程"+Thread.currentThread().getName()+"睡眠结束"); i++; System.out.println("i:"+i); } } }}
输出:
i:11
线程Thread-0进入睡眠状态
线程Thread-0睡眠结束
i:12
i:13
线程Thread-1进入睡眠状态
线程Thread-1睡眠结束
i:14
解释:当线程Thread-0获得对象锁并进入sleep时,线程Thread-1只能等待线程Thread-0执行完成后才能获取对象锁继续执行。
0 0
- java多线程之(sleep)
- Java多线程 之 Callable sleep yield 优先级(三)
- Java多线程之sleep 和yield方法
- Java多线程之Wait,Sleep,Yield,Notify
- java多线程之sleep(long millis)方法
- 多线程之sleep()
- java例程练习(多线程[sleep()方法])
- Java 多线程(PART IV) sleep()方法
- java 多线程sleep
- Java多线程Sleep详解
- 【Java多线程】之二:Java Thread Sleep Example
- java多线程基础(4)-调度方式之暂停当前线程方式3-线程休眠(sleep)
- Java多线程之sleep(),yield(),wait(),notify(),notifyAll()等方法介绍
- java 多线程之wait、sleep、yield区别与联系
- Java多线程之wait,notify,sleep,,yield,join,suspend,resume
- Java多线程之sleep,wait,join和yield关键字
- java多线程之sleep()跟wait()的区别
- java中多线程(1)之sleep与wait的区别
- 抽奖代码
- iOS程序的执行流程和响应者链的关系
- oc的MRC和ARC的区别
- poj3287
- Java编程思想第五章个人总结初始化与清理
- java多线程之(sleep)
- ARM GPU Mali底层架构
- Javah使用问题解决
- 寄居蟹与海葵
- 04-dropbear
- 类的声明、定义及应用
- 77. Combinations
- 理解C语言——从小菜到大神的晋级之路(6)——函数与调用
- 1281 山峰和旗子