Java里如何暂停一个线程,达到一定条件后又唤醒线程?

RT。
最好是具体有针对性的代码……
谢谢!

thread1{
run() {
synchronized(obj) {
while(条件1不满足)obj.wait();
//下面写满足后的操作
}
}
}

//线程2中将条件1满足,然后唤醒线程1
thread2{
run() {
synchronized(obj) {
//使条件1满足
obj.notifyAll();
}
}
}

obj一定要是对同一个对象的引用
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-28
java使用单纯的wait/notify是无法唤醒指定线程的
一般的做法是修改一个特定标识,然后notifyall,被唤醒的线程查看该标识是否指定自己处理,是就运行下去,不是就继续wait
还有一种做法是针对每一个线程做一个wait
object,要唤醒哪一个就notify哪一个object就行了,但是能不能这样做去取决于你的业务需求
第2个回答  2010-05-12
Thread t=Thread.currentThread;
t.sleep(long timeout);

求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的...
可以用以下几种方法:interrupt():中断线程 stop():强迫线程停止执行。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任...

在java中什么办法可以让线程停止然后再重新启动它
1.你可以用布尔值来控制是否让线程运行。例:while(boolean isLive){} 当isLive为true线程就运行,否则不运行。2.你可以用对象。例:while(Object o != null)当对象存在的时候线程就运行,否则不运行!3.你可以用wait()方法来让线程等待,然后用notify()、notifyAll()在适当的时候唤醒线程、或者...

如何实现Java线程的暂停和重新启用?
JAVA中线程开始有start方法,暂停用sleep(time)方法,线程停止用stop方法,线程等待wait方法,java 中没有线程重启一说,只能说线程唤醒notifyAll()或是notify方法,前一个notifyAll()方法是唤醒所有的已休眠或是等待状态下的线程。具体的一种参数请参照JDK文档。Java中的线程的生命周期大体可分为5种状态。

Java中如何停止一个线程
终止线程的三种方法:1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。3. 使用interrupt方法中断线程。 1. 使用退出标志终止线程 当run方法执行完后,线程就会退出。但...

怎样在java中关闭多线程其中一个线程?让其他线程还正常运行?
Thread.currentThread().interrupt(); \/\/这个是获取当前线程并且中断当前线程。public void interrupt()中断线程如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 checkAccess 方法就会被调用,这可能抛出 SecurityException。 如果线程在调用 Object 类的 wait()、wait(long) 或 wait(long, int) 方...

Java线程停止的方法,及stop等方法为什么被废弃
在 Java 中有以下 3 种方法可以终止正在运行的线程:停止一个线程的推荐做法是修改某些变量以指示目标线程应停止运行。 目标线程应定期检查此变量,如果该变量指示要停止运行,则应有序地从其运行方法返回。 这是为了确保对 stop-request 进行及时的通信,变量必须是 volatile 或者必须同步访问变量。使用 ...

Java线程唤醒与阻塞常用方法有哪些
1. sleep() 方法 sleep(毫秒),指定以毫秒为单位的时间,使线程在该时间内进入线程阻塞状态,期间得不到cpu的时间片,等到时间过去了,线程重新进入可执行状态。(暂停线程,不会释放锁)2.suspend() 和 resume() 方法 挂起和唤醒线程,suspend e()使线程进入阻塞状态,只有对应的resume e()被调用...

在java中什么办法可以让线程停止然后再重新启动它
既然是按钮控制。没有必要用线程吧。 直接用程序。循环控制很容易可以达到目的。

如何在 Java 中正确使用 wait,notify 和 notifyAll
在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。1)利用wait()来让一个线程在某些条件下暂停运行。例如,在生产者消费者模型中,生产者线程在缓冲区为满的时候,消费者在缓冲区为空的时 候,都应该暂停运行。2)notify()方法能够唤醒一个正在等待这个对象的monitor的线程,如果有...

java的等待唤醒机制必须要让线程等待吗
1. 线程的挂起和唤醒 挂起实际上是让线程进入“非可执行”状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行;在线程挂起后,可以通过重新唤醒线程来使之恢复运行。挂起的原因可能是如下几种情况:(1)通过调用sleep()方法使线程进入休眠状态,线程在指定时间内不会...

相似回答