网站报备查询,吉林建设网站,天津提升专业关键词排名,门户网站建设情况报告现在几乎没有理由在使用wait 和 notify#xff0c;使用高级工具代替java.util.concurrent 包并发工具分三类#xff1a;Executor 框架并发集合(concurrent Collection)同步器(synchronizer)并发集合对标准集合接口(List、Map、Queue)封装了高性能的并发实现为了提高并发性使用高级工具代替java.util.concurrent 包并发工具分三类Executor 框架并发集合(concurrent Collection)同步器(synchronizer)并发集合对标准集合接口(List、Map、Queue)封装了高性能的并发实现为了提高并发性实现了内部管理同步除非不得已请优先使用ConcurrentHashMap相较于普通 Map 极大提升了性能String#intern方法中看到这个方法是一个 native 的方法但注释写的非常明了。“如果常量池中存在当前字符串, 就会直接返回当前字符串.如果常量池中没有此字符串, 会将此字符串放入常量池中后, 再返回”。阻塞操作(BlockingQueue)一直阻塞直到被成功执行为止take 方法删除并返回头元素队列为空就等待大部分 ExecutorService 都是用Blockingqueue同步器(Synchronizer)使一个线程能够等待另一个线程允许他们协调动作常用同步器有semaphore、CountDownLatch不常用的有CyclicBarrier、ExChanger倒计数锁存器(CountDownLatch)System.nanoTime()精度更高优先使用他而不是currentTimeMillis用于计算时间差使用wait始终应该使用循环模式来调用wait永远不要在循环外调用wait循环会在等待之前和之后调用测试条件(这个很重要这就是这里 while 不能换成if的原因)在多线程的编程实践中wait()的使用方法如下循环里面就一个wait 语句别的事都不做synchronized (monitor) {// 判断条件谓词是否得到满足while(!locked) {// 等待唤醒monitor.wait();}// 处理其他的业务逻辑}那为什么非要while判断而不采用if判断呢如下synchronized (monitor) {// 判断条件谓词是否得到满足if(!locked) {// 等待唤醒monitor.wait();}// 处理其他的业务逻辑}