Java wait(long arg)方法的使用
来源:互联网 发布:淘宝申请退货几天到账 编辑:程序博客网 时间:2024/06/06 19:19
wait(long arg)方法的功能是等待一段时间,在这段时间内是否有线程对持有的锁对象进行唤醒,如果超过了这段时间,该锁就自动唤醒。
class MyRunnable implements Runnable {
private Object lock;
public MyRunnable (Object lock){
this.lock = lock;
}
@Override
public void run() {
try {
synchronized (lock) {
System.out.println(“begin wait start== ” + System.currentTimeMillis());
lock.wait(5000);
System.out.println(“end wait == ” + System.currentTimeMillis());
}
} catch (InterruptedException e) {
e.toString();
}
}
}
public class TestClass1{
public static void main(String[] args) {
private Object lock = new Object();
Thread thread = new Thread(new MyRunnable(lock));
thread.start();
}
}
执行结果如下:
begin wait start== 1469189350089
5s过后锁自动唤醒
end wait == 1469189355090
下面演示提前通过其他的线程唤醒处于等到的锁。
class MyRunnableTwo implements Runnable {
private Object lock ;
public MyRunnableTwo ( Object lock ){
this.lock = lock;
}
@Override
public void run() {
try {
synchronized (lock) {
System.out.println(“begin notify start== ” + System.currentTimeMillis());
lock.notify();
System.out.println(“end notify == ” + System.currentTimeMillis());
}
} catch (InterruptedException e) {
e.toString();
}
}
}
public class TestClass2{
public static void main(String[] args) {
private Object lock = new Object();
//启动线程1,然后线程进入5s阻塞状态
Thread thread1 = new Thread(new MyRunnable(lock));
thread1 .start();
//睡眠3s,然后调用唤醒线程,提前唤醒锁
try {
Thread.sleep(3000)
}
} catch (InterruptedException e) {
e.toString();
}
//睡眠3s,然后调用唤醒线程,提前唤醒锁
Thread thread2 = new Thread(new MyRunnableTwo(lock));
thread2.start();
}
}
执行结果:
begin wait start== 1469190695863
begin notify start== 1469190698871
end notify == 1469190698871
end wait == 1469190698871
- Java wait(long arg)方法的使用
- 【Java基础】永远不会”唤醒”的 wait(long timeout)方法
- Qt QString的arg()方法的使用
- QString的arg方法的使用(Qt)
- Java wait(long timeout)
- java的wait()方法使用注意事项
- java之Thread.sleep(long)与object.wait()/object.wait(long)的区别
- QString的arg方法
- find和mv的结合使用解决 arg list too long的问题
- java wait的使用
- java wait()方法和notify()方法的使用
- java与线程相关的一些重要方法1(不涉及并发包)-Object的wait(long timeout)和wait()
- Qt QString的arg()方法的使用(一)
- java notify()和notifyall()的区别&wait()方法的使用
- Java线程等待wait通知notify方法的使用
- Java的notify,wait,notifyAll方法使用介绍
- 【线程】java之Thread.sleep(long)与object.wait()/object.wait(long)的区别及相关概念梳理
- spring - constructor-arg 的使用
- GP学习(十)-Mosaic raster datasets to a file raster format
- HDU 4352 XHXJ's LIS
- C#和JAVA利用BASE64实现图片编码解码
- 容斥原理 —— 求1~n有多少个数与k互质(二进制算法详细解释&模板)
- CodeForces 1B
- Java wait(long arg)方法的使用
- golang substring方法的几种实现
- NYOJ263精挑细选
- Java调用C++ API完整示例(dll)
- 【杭电2124】Repair the Wall
- 【HTML】快速掌握 html 常用标签
- scanf()函数
- CSVs in Python
- 基础知识