Java 共享对象的信令

Java 共享对象的信令,java,multithreading,Java,Multithreading,我无法理解,在哪里放置方法 MySignal类的hasDataToProcess()和setHasDataToProcess() 在App9类中,在NotThreadSafe类型的对象上保持同步 请帮我了解这个地方 //通过共享对象发送信号 代码: 类MySignal{ 受保护的布尔值hasDataToProcess=false; 公共同步布尔hasDataToProcess(){ 返回this.hasDataToProcess; } 公共同步的void setHasDataToProcess(

我无法理解,在哪里放置方法

MySignal类的hasDataToProcess()和setHasDataToProcess()

在App9类中,在NotThreadSafe类型的对象上保持同步

请帮我了解这个地方

//通过共享对象发送信号

代码:
类MySignal{
受保护的布尔值hasDataToProcess=false;
公共同步布尔hasDataToProcess(){
返回this.hasDataToProcess;
}
公共同步的void setHasDataToProcess(布尔hasData){
this.hasDataToProcess=true;
}
}
类非线程安全{
StringBuilder=新的StringBuilder();
公共void添加(字符串文本){
this.builder.append(文本);
}
公共空间显示(){
System.out.println(生成器);
}
}
公共类App9扩展了线程{
非线程安全实例;
受保护的MySignal sharedSignal=new MySignal();
公共应用程序9(非线程安全共享状态){
this.instance=sharedInstance;
}
@凌驾
公开募捐{
本.instance.add(“sham”);
this.instance.display();
}
公共静态void main(字符串[]args){
NotThreadSafe sharedInstance=新的NotThreadSafe();

对于(int i=0;在
run()中)
方法?您的
MySignal
现在可以用
volatile boolean
替换。该怎么办?我看不到任何锁或任何有助于保护
NotThreadSafe
类的东西。我的目标是在繁忙等待的情况下对NotThreadSafe对象执行同步。例如..protected MySignal sharedSignal=…;而(!sharedSignal.HASDATOTOPROSS()){//什么也不做..忙着等待}
class MySignal{
    protected boolean hasDataToProcess = false;

    public synchronized boolean hasDataToProcess(){
        return this.hasDataToProcess;
    }
    public synchronized void setHasDataToProcess(boolean hasData){
        this.hasDataToProcess = true;
    }
}

class NotThreadSafe{
    StringBuilder builder = new StringBuilder();
    public void add(String text){
        this.builder.append(text);
    }
    public void display(){
        System.out.println(builder);
    }
}

public class App9 extends Thread {
    NotThreadSafe instance;
    protected MySignal sharedSignal = new MySignal();
    public App9(NotThreadSafe sharedInstance){
        this.instance = sharedInstance;
    }
    @Override
    public void run(){
        this.instance.add("sham");
        this.instance.display();
    }

    public static void main(String[] args) {
        NotThreadSafe sharedInstance = new NotThreadSafe();
        for(int i=0; i<10 ; i++){
            Thread t = new App9(sharedInstance);
            t.start();
        }
    }
}