Java工作线程模型

Java工作线程模型,java,multithreading,worker,Java,Multithreading,Worker,我想实现一个工作线程池,它处理输入字符串并处于空闲(无cpu)模式,直到我传递另一个输入字符串。 我为worker编写了下面的代码,但出现了错误 public class Worker implements Runnable { private String data =null; public void setData(String data) { this.data = data; notify(); } @Override public void run() {

我想实现一个工作线程池,它处理输入字符串并处于空闲(无cpu)模式,直到我传递另一个输入字符串。
我为worker编写了下面的代码,但出现了错误

public class Worker implements Runnable {

private String data =null;

public void setData(String data) {
    this.data = data;
    notify();
}

@Override
public void run() {
    while (true){
        try {
            wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("data = " + data);
    }
}
打电话

    Worker worker = new Worker();
    Thread thr = new Thread(worker);
    thr.start();
    Thread.sleep(5000);
     worker.setData("11111");
    Thread.sleep(5000);
     worker.setData("2222");
以及如何检查工作人员是否忙。
谢谢

您需要将wait()和notify()调用放在一个同步块中

static public class Worker implements Runnable {

    private String data = null;

    public void setData(String data) {
        this.data = data;
        synchronized(this) {
            notify();
        }
    }

    @Override
    public void run() {
        while (true) {
            try {
                synchronized(this) {
                    wait();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("data = " + data);
        }
    }
}

你得到了哪个错误?