1.共享变量
线程间通信可以通过发送信号,发送信号的一个简单方式是在共享对象的变量里设置信号值。线程 A 在一个同步块里设置 boolean 型成员变量 hasDataToProcess 为 true,线程 B 也在同步块里读取 hasDataToProcess这个成员变量。这个简单的例子使用了一个持有信号的对象,并提供了 set 和 get 方法
public class MySignal{
//共享的变量
private boolean hasDataToProcess=false;
//取值方法
public boolean getHasDataToProcess(){
return hasDataToProcess;
}
//存值
public void setHasDataToProcess(boolean hasDataToProcess){
this.hasDataToProcess=hasDataToProcess;
}
}
//new 同一个对象
MySignal mySignal = new MySignal();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
//改值
mySignal.setHasDataToProcess(true);
}
});
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
try {
//等待线程 1 完成然后取值
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("改变后的值"+mySignal.getHasDataToProcess());
}
});
thread.start();
thread1.start();