Java中线程之间的通信-(子线程获得主线程的方式)以及代码例子
时间: 2024-05-11 08:17:10 浏览: 92
Java线程间的通信方式详解
Java中线程之间的通信可以通过共享变量、wait/notify机制、BlockingQueue等方式实现。下面是一种子线程获得主线程的方式的代码例子:
```java
public class Main {
public static void main(String[] args) {
Data data = new Data();
Thread thread = new Thread(new SubThread(data));
thread.start();
// 主线程等待子线程执行完毕
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("主线程中的数据:" + data.get());
}
}
class SubThread implements Runnable {
private Data data;
public SubThread(Data data) {
this.data = data;
}
@Override
public void run() {
// 子线程修改data中的数据
data.set("子线程中的数据");
}
}
class Data {
private String value;
public synchronized void set(String value) {
this.value = value;
}
public synchronized String get() {
return value;
}
}
```
在这个例子中,主线程创建了一个Data对象,并通过构造函数将其传递给了子线程。子线程在执行过程中修改了Data对象中的数据。主线程在子线程执行完毕后获取Data对象中的数据并输出。需要注意的是,在访问Data对象时需要使用synchronized关键字来保证线程安全。
阅读全文