常见错误:Java多线程同步问题示例
在Java编程中,多线程同步是一个重要的概念,它处理的是多个线程同时访问共享资源的问题。如果控制不当,可能会导致数据不一致或者线程安全问题。
以下是一个简单的多线程同步问题示例:
// 假设我们有一个CountDownLatch
CountDownLatch counter = new CountDownLatch(2);
// 两个线程
Thread thread1 = new Thread(() -> {
System.out.println("Thread 1 starts");
try {
counter.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 1 ends");
}));
Thread thread2 = new Thread(() -> {
System.out.println("Thread 2 starts");
try {
counter.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 2 ends");
}));
// 启动线程
thread1.start();
thread2.start();
// 等待计数器归零,表示两个线程都执行完毕
counter.countDown();
在这个例子中,我们使用了CountDownLatch来同步两个线程。当一个线程调用await()方法等待计数器归零时,另一个线程必须先完成相应操作并调用countDown()方法来将计数器减少1。这样,两个线程才能按照设定的顺序执行。
还没有评论,来说两句吧...