public class UnsafeThread { public static int num = 0; private static volatile CountDownLatch countDownLatch = new CountDownLatch(10); public static void inCreate(){num++;} public static void main(String[] args) { for (int i = 0; i < 10; i++) { new Thread(() -> { for (int j = 0; j < 100; j++) { inCreate(); } countDownLatch.countDown(); }).start(); } while (true){ if(countDownLatch.getCount() == 0){ System.out.println(num); break; } } } }
时间: 2023-06-02 09:03:40 浏览: 80
CountDownLatch源码解析之await()
这个问题属于技术问题,可以回答。这段代码中,定义了一个静态变量num,然后开启10个线程,每个线程都对num进行100次自增操作,最终输出num的值。由于多线程并发,可能会存在线程安全问题,需要进行同步处理,例如添加synchronized关键字或使用AtomicInteger类来保证线程安全。
阅读全文