线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。
在Java中,可以使用Thread
类或Runnable
接口来创建线程。为了实现线程间的通信,可以使用wait()
, notify()
, notifyAll()
方法或者java.util.concurrent
包中的工具类。
以下是一个简单的Java示例,展示了如何创建n个线程并使它们相互通信:
import java.util.ArrayList;
import java.util.List;
public class ThreadCommunicationExample {
private static final Object lock = new Object();
private static int sharedResource = 0;
public static void main(String[] args) {
int n = 5; // 创建5个线程
List<Thread> threads = new ArrayList<>();
for (int i = 0; i < n; i++) {
threads.add(new Thread(new Worker(lock)));
}
for (Thread thread : threads) {
thread.start();
}
}
static class Worker implements Runnable {
private final Object lock;
public Worker(Object lock) {
this.lock = lock;
}
@Override
public void run() {
synchronized (lock) {
try {
while (sharedResource < 10) {
System.out.println(Thread.currentThread().getName() + " waiting...");
lock.wait();
}
System.out.println(Thread.currentThread().getName() + " proceeding with sharedResource = " + sharedResource);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
}
在这个例子中,我们创建了5个线程,它们共享一个资源sharedResource
。每个线程在lock
对象上同步,并等待sharedResource
达到10。一旦达到这个值,线程将继续执行。
synchronized
关键字或Lock
接口)可以解决这个问题。领取专属 10元无门槛券
手把手带您无忧上云