wat java_并发工具优于wati、notify(69)

现在几乎没有理由在使用wait 和 notify,使用高级工具代替

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的原因)

b2aef70c741799493dc817c9d1fb1599.png

e0730550730e46201e0f7f58e7e94078.png

在多线程的编程实践中,wait()的使用方法如下:

循环里面就一个wait 语句,别的事都不做

synchronized (monitor) {

//  判断条件谓词是否得到满足

while(!locked) {

//  等待唤醒

monitor.wait();

}

//  处理其他的业务逻辑

}

那为什么非要while判断,而不采用if判断呢?如下:

synchronized (monitor) {

// 判断条件谓词是否得到满足

if(!locked) {

// 等待唤醒

monitor.wait();

}

// 处理其他的业务逻辑

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一道关于 fork 的笔试题

题目阅读下面的代码&#xff0c;显示终端会打印出几个 hello world&#xff1f;#include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h>int main() {fork();fork();fork();printf("hello world\n");exit(0); }…

小球游戏1

引用&#xff1a;http://www.oschina.net/code/snippet_12_4121 [图片] pic3.jpg [图片] pic4.jpg [代码] [Java]代码 01public class Player extends AnimatedSprite {02...03Override04 protected void onManagedUpdate(final float pSecondsElapsed) {05 super.…

java怎么调kettle_通过Java调取Kettle的结果集

Kettle端&#xff1a;Data Grid只是测试数据&#xff0c;目的是把数据传递到记录结果。Java端&#xff1a;package com.womai.util;import org.pentaho.di.core.KettleEnvironment;import org.pentaho.di.core.RowMetaAndData;import org.pentaho.di.trans.Trans;import org.pe…

我也确实很向往深圳这种拼搏的精神

今天跟个同学聊天&#xff0c;是关于他的offer选择&#xff0c;他拿了一个不错的外企岗位offer&#xff0c;这个offer的薪资是他现在薪资两倍还多一些&#xff0c;他现在人在外地&#xff0c;年后准备来深圳工作&#xff0c;他在微信说让我给些建议。首先我肯定的是&#xff0c…

中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux

去年 6 月份&#xff0c;中科院大学教授、中科院计算所研究员包云岗&#xff0c;发布了开源高性能 RISC-V 处理器核心 —— 香山。近日&#xff0c;包云岗在社交平台晒出图片&#xff0c;香山芯片已流片&#xff0c;回片后进行了串口调通&#xff0c;1 月 24 日成功运行了 Linu…

java io流操作_十个Demo进行讲解Java中IO流的常用操作~

好久不见的IO流对IO流的学习&#xff0c;我记得还是初学Java基础的时候&#xff0c;后来找工作过程中经常看到有些招聘信息中写到熟悉IO流&#xff0c;现在想想IO流&#xff0c;真的是一脸懵逼&#xff0c;不说这么多废话了&#xff0c;IO流这次好好整理一下。说说IO流的类别在…

这些应用仍未兼容安卓新版本,系统升级后将无法使用

8月7日&#xff0c;谷歌正式发布Android 9 Pie&#xff0c;至今已两月有余。近日&#xff0c;华为终端开放实验室对国内主流应用在Android 9 Pie的兼容性进行测试&#xff0c;结果显示&#xff1a;目前TOP3000应用兼容率已经超过95%&#xff0c;但仍有少量应用存在启动失败、闪…

非常郁闷,WinForm中正常显示的自定义控件无法在WebForm中正常显示!

我写了一个自定义控件(Win Control)&#xff0c;此控件在WinForm中运行正常&#xff0c;但在WebForm中无法显示(在WebForm中此控件并不显示为红叉&#xff0c;但是一个对象图标)。由于没有出现权限或安全方面的提示&#xff0c;因此我从头开始一行一行进行比对&#xff0c;最终…

在家过年这两天|多图

这两天收到了很多朋友的新年祝福&#xff0c;在这里回应下&#xff0c;希望看到这篇文章的朋友们新的一年快乐开心&#xff0c;在求学的人学有所成&#xff0c;在工作的朋友们功成名就&#xff0c;家人健康&#xff0c;吃喝不愁……祝你们㏠㏡㏢㏣㏤㏥㏦㏧㏨㏩㏪㏫㏬㏭㏮㏯㏰㏱…

Eclipse下的项目管理插件介绍

前言 最近,一直学习开源项目的代码,难免会碰到各种版本管理器,作为一名在校大学生,学校的课程完全没提及到,靠着自己的摸索,走了不少弯路,写个列表,望对大家有所帮助.顺便提一下,这里只说客户端,至于服务端,自行根据提供的资料学习 CVS 这里eclipse自带就有,也有一段历史,现在的…

算命

今天大年初三&#xff0c;出了太阳变暖很多&#xff0c;我们带着家里的小朋友一起上街吃早餐。因为明天要去阳西&#xff0c;决定去外婆家看看&#xff0c;在超时买了点东西&#xff0c;走回车上刚好看到路边有算命先生&#xff0c;我就想着来计算一下。我先是问了记算一次多少…

poj2631

求一棵树的直径&#xff0c;所谓直径就是树上距离最远的两个点&#xff01; 树形动归&#xff0c;每个点的为根的子树的最长向下链和次长链的和&#xff01; 当然也可以二次深搜&#xff01; ————————————————————————————————————————…

原来做的一个语义搜索软件的界面

今天得知NGW&#xff08;New Generation Web&#xff0c;关于语义网络方面的&#xff09;课程及实验作业成绩已公布&#xff0c;急去查看&#xff0c;但与想象中相去甚远。 罢了&#xff0c;凡事但求尽力而为&#xff0c;末了问心无愧即可&#xff0c;其它种种皆是虚幻。 附&am…

2年质保期刚过就翘辫子,这是什么骚设计?

1.终于又坏了一件自从开始写聊聊身边的嵌入式这个系列&#xff0c;便常常有一个邪恶的想法在脑袋里盘旋&#xff0c;总盼着家里哪件电器赶紧出点毛病。你知道&#xff0c;如果不把一个东西拆的七零八落&#xff0c;覆水难收&#xff0c;那是不能满足咱们的好奇心的。都说念念不…

java时间戳版本号_maven 自动编译版本号 buildnumber-maven-plugin 1.4

最近新项目要需要更新发布版本号&#xff0c;用于标识发布的版本&#xff0c;网上找了下插件&#xff1a;buildnumber-maven-plugin 1.4 。记录下自己使用成功过程中遇到的各种问题&#xff0c;以供需要的朋友参考&#xff1a;插件官方网站&#xff1a;http://www.mojohaus.org…

如何分割合并ISO文件

今天打算在电脑上装Androd系统&#xff0c;谷歌考虑到了这方面的需求&#xff0c;特意制作了liveandroidv0.3.iso操作系统的镜象文件供开发人员下载。没有人愿意为了装这个系统而把原先的系统换掉&#xff0c;许多人也只是想玩票一下。这样就只能用虚拟机安装了&#xff0c;虚拟…

推荐Linux内核书籍

大家好&#xff0c;挺久没推荐内核相关的书籍了&#xff0c;今天给大家推荐一本我觉得不错的书&#xff0c;这本书籍的作者叫做李云华&#xff0c;书籍名字叫《独辟蹊径品内核》&#xff0c;他的写作思路非常不错&#xff0c;他会引用内核代码中的内容&#xff0c;给大家剖析讲…

java照片墙_基于jQuery实现照片墙自动播放特效

一个动态展示图片的页面&#xff1a;功能&#xff1a;定时从后台取数据&#xff0c;进行页面图片追加。对已经在页面中的图片&#xff0c;进行放大缩小动画展示。目前我们用于微信新关注用户头像展示。抽奖body{background-color:#000;text-transform:uppercase;color:#fff;pos…

使用croc命令在Linux系统电脑之间传输文件和文件夹

‍在两台或多台计算机之间传输文件的方法有很多。‍你可以使用基于服务器的文件共享工具&#xff0c;点对点文件共享app&#xff0c;U盘&#xff0c;外部硬盘驱动器&#xff0c;SCP&#xff0c;NFS&#xff0c;FTP&#xff0c;HTTP&#xff0c;云存储平台等等。本文将介绍一个名…

Lady Bird

La Ballade of Lady Bird[Lady Bird]Bird : Lady? Lady : Yes Bird? Bird : Its cold Lady : I know Lady : Bird... I cannot see a thing Bird : Its all in your mind Lady : Im worried Bird : No one will come to see us Lady : Maybe they come but we just dont see …