在Linux下使用Java实现并发控制,可以通过以下几种方式:
public class Counter {
private int count;
public synchronized void increment() {
count++;
}
}
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Counter {
private int count;
private final Lock lock = new ReentrantLock();
public void increment() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
}
import java.util.concurrent.Semaphore;
public class Counter {
private int count;
private final Semaphore semaphore;
public Counter(int permits) {
semaphore = new Semaphore(permits);
}
public void increment() throws InterruptedException {
semaphore.acquire();
try {
count++;
} finally {
semaphore.release();
}
}
}
import java.util.concurrent.CountDownLatch;
public class Worker implements Runnable {
private final CountDownLatch latch;
public Worker(CountDownLatch latch) {
this.latch = latch;
}
@Override
public void run() {
try {
// 执行任务
} finally {
latch.countDown();
}
}
}
public class Main {
public static void main(String[] args) throws InterruptedException {
int numWorkers = 5;
CountDownLatch latch = new CountDownLatch(numWorkers);
for (int i = 0; i < numWorkers; i++) {
new Thread(new Worker(latch)).start();
}
latch.await(); // 等待所有工作线程完成
}
}
import java.util.concurrent.CyclicBarrier;
public class Worker implements Runnable {
private final CyclicBarrier barrier;
public Worker(CyclicBarrier barrier) {
this.barrier = barrier;
}
@Override
public void run() {
try {
// 执行任务
barrier.await(); // 等待其他线程
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class Main {
public static void main(String[] args) {
int numWorkers = 5;
CyclicBarrier barrier = new CyclicBarrier(numWorkers, () -> System.out.println("所有工作线程已完成"));
for (int i = 0; i < numWorkers; i++) {
new Thread(new Worker(barrier)).start();
}
}
}
这些方法可以帮助你在Linux下使用Java实现并发控制。你可以根据具体需求选择合适的同步机制。