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();
共享变量通信
本文介绍了一种线程间通信的方法——通过共享变量实现信号传递。具体示例中,两个线程利用一个公共对象的布尔成员变量hasDataToProcess进行状态同步。一个线程设置该变量为真,另一个线程读取此变量的状态。
2038

被折叠的 条评论
为什么被折叠?



