java的多线程同步互斥:synchronized的乱用
在java的多线程同步互斥处理中,synchronized是别不可少的东西.
但是如果不清晰的编程的话,也就是乱用synchronized的话,死锁的发生就是离你很近的话题了.
在前面的一个维护中就发现一个死锁的bug.究其原因是开发者没有真正明白多线程的同步互斥,没有意识到死锁的发生,或者说自己认为写的代码不会发生死锁.
死锁的发生一般并不是很容易再现的.一旦发生了调查,确认都会花费很多时间.特别是对大型网站来时这种现象的发生时不可原谅的.
互斥处理中锁方法和锁块. 感觉是在锁块的处理中容易乱用synchronized.
在那个维护的中的代码逻辑:
方法A中的如下的处理
准备处理的代码1
synchronized (this) {
处理1
}
准备处理的代码2
synchronized (this) {
处理2
}
其他处理
这样用一个方法中把自己这个对象锁了两次.死锁的发生就是有可能的了.
在上面的那个问题代码中,如果是锁自己的话,在一个方法中就不能进行多次锁.
其他的多线程还有很多很多需要的注意的,上面只是就事论事简单说了一下碰到的问题.
相关文档:
以下是计算两个数误差是否在10% ,如果在10%以内是正常,其他是不正常,用较小的数*10%+用较小的数=用较小的数*1.1%
double costNum =2;//电费平均日电量
double amountNum =3; //电量平均日电量
if(amountNum ......
第一次写这样的博客,感觉自己做的有点像笔记,不过本来就是笔记,我做笔记一般都是把本来不知道的,感觉有用的写下来,而且我也一般用与老师接近的语句写下来,避免自己的误解导致错误。
这次我看了《传智播客_张孝祥_Java基础1_Java开发前奏》这个课程。
1.老师说JAVA的第一个特点是”一次编译,到处运行“, ......
方法就是一段可重复调用的代码端
方法的定义在Java中有多种形式,
现在的我所说的方法就是指可以用main方法直接去调用的方法。
public class JavaDemo06
{
public static void main(String args[])
{
printTab() ;
}
// 定义一个方法,此方法用于打印Hello World
// public static必须加上,因为是� ......
1、 类型装载、链接与初始化
Java虚拟机通过装载、链接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。其中,装载就是把二进制的Java类型读入Java虚拟机中,而连接就是把这种已经读入虚拟机的二进制形式的类型数据合并到虚拟机的运行状态中去。连接阶段分了三个步骤:验 ......
最近做spider,java的正则表达式解析出每个网页的超链接,感觉正则真的神通广大!
大概说一下,我的通常用法。
这一不只是解析出 这部分
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sb);//sb是一个html 代 ......