下列关于JAVA多线程的叙述正确的是()
被 A 误导了。。。
看 Thread.start() 和 Thread.run() 的源码,run 就是一个普通的方法,跟 getXxxx 差不多;start 则不同,在内部,他会调用 native code 创建新的线程。
我选了B&C。我不明白B为什么错误。
API对CountDownLatch的说明是: CountDownLatch: A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
从说明上可以看到,CountDownLatch允许线程等待其它线程完成操作,与答案中“可以让一组线程等待其他线程”并无冲突。
从API的使用角度,这两者的核心方法有两类:
用这两类方法就能实现答案中的“可以让一组线程等待其他线程”。CyclicBarrier只不过用await()实现了两个功能。 CyclicBarrier对于CountDownLatch的最大区别在于:可重置、屏障动作、提前离开线程引起的破坏性处理。但这都与问题无关。