阅读量:2
在 Java 中,要同步执行新建的线程,可以使用以下方法:
- 使用
synchronized关键字:
在需要同步的方法或代码块上添加 synchronized 关键字。这将确保在同一时刻只有一个线程可以访问该方法或代码块。
public class MyRunnable implements Runnable {
private final Object lock = new Object();
@Override
public void run() {
synchronized (lock) {
// 需要同步的代码
}
}
}
- 使用
ReentrantLock类:
ReentrantLock 是一个可重入的互斥锁,提供了比 synchronized 更灵活的锁定机制。
import java.util.concurrent.locks.ReentrantLock;
public class MyRunnable implements Runnable {
private final ReentrantLock lock = new ReentrantLock();
@Override
public void run() {
lock.lock();
try {
// 需要同步的代码
} finally {
lock.unlock();
}
}
}
- 使用
CountDownLatch类:
CountDownLatch 是一个同步辅助类,允许一个或多个线程等待直到一组操作完成。
import java.util.concurrent.CountDownLatch;
public class MyRunnable implements Runnable {
private final CountDownLatch latch = new CountDownLatch(1);
@Override
public void run() {
// 执行任务
latch.countDown(); // 任务完成后,计数器减一
}
public void waitForTask() throws InterruptedException {
latch.await(); // 等待任务完成
}
}
- 使用
CyclicBarrier类:
CyclicBarrier 是一个同步辅助类,允许一组线程相互等待,直到所有线程都准备好继续执行。
import java.util.concurrent.CyclicBarrier;
public class MyRunnable implements Runnable {
private final CyclicBarrier barrier = new CyclicBarrier(2); // 设置为 2,因为有两个线程需要等待
@Override
public void run() {
try {
// 执行任务
barrier.await(); // 等待其他线程完成任务
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
}
}
根据你的需求选择合适的方法来实现线程同步。
以上就是关于“java 新建线程如何同步执行”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm