日期:2014-05-20  浏览次数:20714 次

java睡眠的线程的时间如何唤醒或动态改变
现在有个需求,启动了一个线程,在线程里面睡眠一段时间,但在这段睡眠时间结束前想改变他睡眠的时间该怎么做,能不能唤醒后在赋值睡眠时间。


------解决方案--------------------
引用:
Quote: 引用:

使用线程锁,改小的话,只需要提高线程优先级,唤醒该线程,然后重新设置睡眠时间即可。当前唤醒线程的操作可能不是立即唤醒的

请问sleep的线程该怎样唤醒呢


Object lock = new Object();
int time1 = 1000;
int time2 = 500;
//第一次线程休眠
synchronized (lock) {
try {
lock.wait(time1);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}

//激活线程的时候调用
synchronized (lock) {
lock.notify();
try {
lock.wait(time2);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}