并发编程:Java线程间通信问题示例

原创 拼搏现实的明天。 2024-10-23 03:42 190阅读 0赞

在Java中,线程间的通信是一个关键的问题。以下是一些常见的通信方式的示例:

  1. 共享变量(synchronized)
    ```java
    class Counter {
    private int count = 0;

    synchronized void increment() {

    1. count++;

    }

    synchronized int getCount() {

    1. return count;

    }
    }

// 创建两个线程,一个增加计数,另一个获取计数
Thread thread1 = new Thread(() -> {
Counter counter = new Counter();
for (int i = 0; i < 5; i++) {
counter.increment();
System.out.println(“Counter: “ + counter.getCount());
}
}));

Thread thread2 = new Thread(() -> {
Counter counter = new Counter();
while (!thread1.isInterrupted())) {
int count = counter.getCount();
if (count >= 5) {
System.out.println(“All counters reached 5!”);
break;
} else {
System.out.println(“Counter: “ + count);
try {
Thread.sleep(1000); // 模拟耗时操作
} catch (InterruptedException e) {
thread1.interrupt();
e.printStackTrace();
}
}
}
}));

thread1.start();
thread2.start();

```
在这个例子中,两个线程通过共享的Counter对象进行通信。线程1增加计数,线程2获取并检查计数。

这只是一个基本的例子,实际应用中可能需要处理更复杂的问题,如锁机制的使用、条件变量等。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,190人围观)

还没有评论,来说两句吧...

相关阅读