java java.lang_Java之java.lang.IllegalMonitorStateException

今天又中彩了, 原本很简单的多线程程序, 蓦然间冒了个"java.lang.IllegalMonitorStateException" , 杀了个措手不及. 一直纳闷, 为什么为什么? 查资料说该异常由于对象未获取得到Lock就试图操作Lock. 再细细源码, 原来不不小将lock.lock()写错为lock.tryLock(). 坑爹啦! 充足的睡眠是很关键的, 让你少做错事! 稳定的心态也是很关键的, 让你少走弯路!

public boolean put(String value) {

boolean result = false;

lock.tryLock();

try {

if (queue.size() < config.queueSize) {

queue.addLast(value);

result = true;

} else {

result = putToBuffer(value);

}

if (result) {

notEmpty.signalAll();

}

} catch (IOException e) {

logger.error("文件缓存添加元素错误", e);

} finally {

lock.unlock();

}

return result;

}

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

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

相关文章

CruiseControl.NET ----- mail 配置

最近在用 CruiseControl.NET实现每日构建&#xff0c;其他配置起来都挺方便&#xff0c;就是在邮件设置上费了不少时间,我用的是CC.NET1.6,这个版本已经支持发送附件&#xff0c;如果使用外部邮箱&#xff0c;记得要把邮箱的smtp功能打开&#xff0c;下面是Mail配置的一个例子&…

java编程字_Java编程基本概念

1.标识符①用于给变量、类和方法命名(类名首字母大写&#xff0c;变量和方法名首字母小写并遵循驼峰原则)②标识符的命名规范&#xff1a;■标识符必须以字母、下划线和美元符$开头。■标识符其他部分可以是字母、下划线、美元符和数字的任意组合。■Java标识符大小写敏感&…

ubuntu gedit出错:Failed to connect to the session manager

刚才用su到root后&#xff0c;用命令gedit发现会出错&#xff1a;** (gedit:2976): WARNING **: 连接已关闭(gedit:2976): EggSMClient-WARNING **: Failed to connect to the session manager:None of the authentication protocols specified are supported** (gedit:2976): …

php 类的实现 完整例子

文件目录&#xff1a; --index.php --php --data_info.php index.php 这里要require_once类所在的php文件 <?php require_once(./php/data_info.php);$oneDatanew user;$oneData->setName("username");$oneData->setPassword("password");echo $…

mac java版本 不一致_mac实现不同版本的jdk切换

之前使用jdk11进行java开发(纯粹因为喜欢新版?)但是使用jdk11在布署hadoop伪分布时各种报错, 所以还是下载jdk8回来.接下来就是mac端切换两个版本的jdk(按照网上找的方式好像有bug-文章最后再说.虽然不知道怎么解决,但是至少我可以成功部署hadoop, 所以这里就先忽略)首先下载j…

Meld安装

Ubuntu下文件/目录对比的软件Meld可能有很多用户还不是很熟悉&#xff0c;下文就给大家介绍如何安装Meld和移植到Gedit下。具体内容如下所述。 Meld允许用户查看文件、目录间的变化。很容易移植到Gedit下&#xff0c;方便用户使用。 安装Meld Meld默认在Ubuntu官方源中&#…

ios sqlite3 初级应用

ios sqlite3 初级应用 在ios中&#xff0c;持久化用好几种 方法&#xff0c;前面已经介绍了 两种 &#xff0c;一个是简单的写入文件&#xff0c;另一个是加入了序列化并写入文件中&#xff0c;现在介绍 ios 中嵌入式数据库sqlite3的初级应用 当然在使用sqlite3之前 你需要将l…

java aqs源码_java中AQS源码分析

AQS内部采用CLH队列。CLH队列是由节点组成。内部的Node节点包含的状态有static final int CANCELLED 1;static final int SIGNAL -1;static final int CONDITION -2;static final int PROPAGATE -3;其中取消状态表示任务的取消&#xff0c;SIGNAL状态表示后续节点需要唤…

android4.0.3去掉底部状态栏statusbar,全屏显示示例代码

要去掉android4.0上的状态栏&#xff0c;全屏显示的代码如下&#xff1a; 1、将usleep和killall这二个文件放到assets文件夹下。这二个文件可在下面的附件中下载到。 2、创建Device.java&#xff08;注&#xff1a;附件里有完整的代码&#xff09;: 001import java.io.Buf…

[译]预留位置队列PRQueue:多线程程序中消息输入队列和消息输出队列保持同序...

译自&#xff1a; http://accu.org/var/uploads/journals/overload101.pdf 在多线程应用程序中&#xff0c;要求消息输入队列和消息输出队列顺序要求保持一致&#xff0c;而忽略多线程并发处理的顺序&#xff0c;这种情况是比较难处理的。在本文中&#xff0c;作者设计了一种新…

java 前端工作内容_java前端、java后端、java全栈工作主要内容是什么?哪个薪资高?...

摘要最近&#xff0c;听了一场关于java全栈工程师职位的简介说明&#xff0c;里面很清楚的说明了一下前端&#xff0c;后端&#xff0c;全栈都是做什么工作的。其实&#xff0c;想做这个行业&#xff0c;就应该了解职能以及技能需求&#xff0c;这样学习才能更高效。我知道一些…

用yate2实现软VoIP语音通话(SIP协议)

用yate2实现软VoIP语音通话(SIP协议) 阳光男孩 发表于 2009-01-08 2009年1月7日&#xff0c;工业与信息化部发放了三张3G牌照&#xff0c;标志着中国进入了通信技术的新时代。3G的重要特性之一是高速数据链路&#xff0c;移动上网速度大大提高。同时&#xff0c;中国移动也大…

避免頁面重復提交3/15

在用戶做資料錄入操作時時常會反映重復記錄出現,經過了解是針對新手或者性子急的用戶在儲存時多次點擊引起 有效處理方法:新增一textbox,對儲存按鈕的onclick增設js代碼:btnsave.Attributes.Add("onclick", "var tb15document.getElementById(Textbox15);var nu…

java 日志设计_Java日志设计实践(3) - 开发篇

1.选择恰当的日志级别2.输出明确的提示文字和充分的现场信息3.输出内容一行搞定&#xff0c;不要换行4.其他1.选择恰当的日志级别选择日志级别时需要遵循一些通用规范&#xff0c;不可随意定义log4j的日志级别&#xff0c;由低到高排列&#xff1a;all trace debug info warn e…

ConfigurationManager.AppSettings[] ConfigurationManager智能显示不出来

解决办法&#xff1a;在项目中添加System.Configuration引用。转载于:https://www.cnblogs.com/2008freestyle/archive/2012/03/15/2398046.html

java5的递归算法_java递归算法 java面试题(5)

Java语言是一种具有动态性的解释型语言&#xff0c;类(class)只有被加载到JVM后才能运行。当运行指定程序时&#xff0c;JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中&#xff0c;并组织成为一个完整的Java应用程序。这个加载过程是由类加载器完成&#xff0c…

OpenGL ES 2.0 for iPhone Tutorial

来源&#xff1a;http://www.raywenderlich.com/3664/opengl-es-2-0-for-iphone-tutorial If youre new here, you may want to subscribe to my RSS feed or follow me on Twitter. Thanks for visiting! Learn how to use OpenGL ES 2.0 from the ground up! OpenGL ES is th…

java种子填充_种子填充实例运行出问题

种子填充实例运行出问题import java.awt.*;import java.applet.*;import java.awt.image.ImageProducer;import java.awt.image.MemoryImageSource;import java.util.Stack;public class scanseed extends Applet {private static final long serialVersionUID 1L;int redColo…

Mdi悬浮子窗体不超过主窗体边界

//1.设置父窗体(主窗体)的AutoScrollMinSize大于父窗体的Size//例如主窗体(400,400), AutoScrollMinSize(500,500)//2.设置主窗体的IsMdiContainer为true private void Form2_Load(object sender, EventArgs e) {//悬浮窗体 Form3 f3 new Form3();//…

Ubuntu 12.04 root用户登录设置

Ubuntu 12.04默认是不允许root登录的&#xff0c;在登录窗口只能看到普通用户和访客登录。以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后&#xff0c;修改系统配置文件需要切换到超级用户模式,在终端窗口里面输入: sudo -s.然后输入普通用户登陆的密码&#xff0c…