Java 线程挂起并恢复内部运行()

Java 线程挂起并恢复内部运行(),java,Java,我通过实现runnable和重写run()实现了多线程。我想挂起run()中的线程 请帮帮我 在void run(){}中我应该做什么?您可能需要Object.wait(),然后是Object.notifyAll(),但正确使用它是一件棘手的事情。仔细阅读。一个好的源代码是Josh Bloch的高效Java。您可能需要对象。wait(),然后对象。notifyAll(),但是正确使用它是一件棘手的事情。仔细阅读。一个好的源代码是Josh Bloch的高效Java。通常的方法是调用另一个线程可以通

我通过实现
runnable
和重写
run()
实现了多线程。我想挂起
run()
中的线程

请帮帮我


void run(){}
中我应该做什么?

您可能需要
Object.wait()
,然后是
Object.notifyAll()
,但正确使用它是一件棘手的事情。仔细阅读。一个好的源代码是Josh Bloch的高效Java。

您可能需要
对象。wait()
,然后
对象。notifyAll()
,但是正确使用它是一件棘手的事情。仔细阅读。一个好的源代码是Josh Bloch的高效Java。

通常的方法是调用另一个线程可以通知的某个对象上的
wait
。这将是代码的模式:

public void run() {
    . . .
    // decide to suspend thread execution:
    synchronized (LOCK) {
        try {
            LOCK.wait();
        } catch (InterruptedException e) {
            // thread was interrupted -- time to return?
        }
    }
    // execution resumes here after interrupt or notify
}
然后另一个线程执行此代码:

synchronized (LOCK) {
    LOCK.notify(); // or notifyAll();
}

在这些代码片段中,
LOCK
是两段代码都可以访问的对象。如果使用可用对象来完成任务是有意义的,那么就不需要单独的对象。

通常的方法是调用另一个线程可以通知的某个对象上的
wait
。这将是代码的模式:

public void run() {
    . . .
    // decide to suspend thread execution:
    synchronized (LOCK) {
        try {
            LOCK.wait();
        } catch (InterruptedException e) {
            // thread was interrupted -- time to return?
        }
    }
    // execution resumes here after interrupt or notify
}
然后另一个线程执行此代码:

synchronized (LOCK) {
    LOCK.notify(); // or notifyAll();
}

在这些代码片段中,
LOCK
是两段代码都可以访问的对象。如果使用一个可用对象来完成任务是有意义的,那么就不需要单独的对象。

如果不知道更多细节,很难判断。但你的选择是:

  • Thread.sleep()
    -并无条件地睡眠一段时间

  • wait/notify
    配对等待某个对象

  • 阻止数据结构,如在集合中出现某些内容时唤醒线程

  • Thread.join()
    等待其他线程

  • Java5并发抽象,如


    • 不知道更多细节就很难判断。但你的选择是:

      • Thread.sleep()
        -并无条件地睡眠一段时间

      • wait/notify
        配对等待某个对象

      • 阻止数据结构,如在集合中出现某些内容时唤醒线程

      • Thread.join()
        等待其他线程

      • Java5并发抽象,如