synchronized
可以保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块java.util.concurrent
中更高级的工具分成三类:Executor Framework 、并发集合(Concurrent Collection)以及同步器(Synchronizer)Map
的 putIfAbsent(key, value)
方法ConcurrentHashMap
,而不是使用 Collections.synchronizedMap
CountDownLatch
和 Semaphore
。较不常用的是 CyclicBarrier
和 Exchanger
。功能最强大的同步器是 Phaser
。System.nanoTime
,而不是使用 System.currentTimeMillis
。因为 System.nanoTime
更准确,也更精确,它不受系统的实时时钟的调整所影响任何依赖线程调度器来保证正确性或性能的程序都可能是不可移植的。