Java-尝试暂停线程

Java-尝试暂停线程,java,multithreading,synchronization,Java,Multithreading,Synchronization,可能重复: 有什么问题吗 private final Object lock; public synchronized void run() { while (numItersCompleted < maxNumIters) { while (guiState == GuiState.PAUSED) { try { lock.wait(); // problematic line 您没有在锁周围进

可能重复:

有什么问题吗

    private final Object lock; 
public synchronized void run() {
    while (numItersCompleted < maxNumIters) {
        while (guiState == GuiState.PAUSED) {
            try {
                lock.wait(); // problematic line

您没有在锁周围进行
同步

public void run() {
    while (numItersCompleted < maxNumIters) {
        while (guiState == GuiState.PAUSED) {
            try {
                synchronized (lock) {
                    lock.wait(); // problematic line
                }
public void run(){
while(numItersCompleted

我本来打算添加一个链接,但Gary向我打赌这是一个重复的问题。你不能对对象执行
wait()
notify()
,除非你处于
synchronized(lock)
块中。你在
上进行了同步,但你在
上等待了
lock
public void run() {
    while (numItersCompleted < maxNumIters) {
        while (guiState == GuiState.PAUSED) {
            try {
                synchronized (lock) {
                    lock.wait(); // problematic line
                }