java的多线程同步互斥:synchronized的乱用
在java的多线程同步互斥处理中,synchronized是别不可少的东西.
但是如果不清晰的编程的话,也就是乱用synchronized的话,死锁的发生就是离你很近的话题了.
在前面的一个维护中就发现一个死锁的bug.究其原因是开发者没有真正明白多线程的同步互斥,没有意识到死锁的发生,或者说自己认为写的代码不会发生死锁.
死锁的发生一般并不是很容易再现的.一旦发生了调查,确认都会花费很多时间.特别是对大型网站来时这种现象的发生时不可原谅的.
互斥处理中锁方法和锁块. 感觉是在锁块的处理中容易乱用synchronized.
在那个维护的中的代码逻辑:
方法A中的如下的处理
准备处理的代码1
synchronized (this) {
处理1
}
准备处理的代码2
synchronized (this) {
处理2
}
其他处理
这样用一个方法中把自己这个对象锁了两次.死锁的发生就是有可能的了.
在上面的那个问题代码中,如果是锁自己的话,在一个方法中就不能进行多次锁.
其他的多线程还有很多很多需要的注意的,上面只是就事论事简单说了一下碰到的问题.
相关文档:
Web Service的废话就不说了。就说怎么使用吧。
1.需要java环境 到http:.//java.sun.com/J2SE 可以下载 Java Development Kit
2.需要Google API的Jar文件,Googleapi.jar。可以到http://www.google.com/apis下载。填加进CLASSPATH.
3.申请Google访问帐号,目前Google支持免费申请的方式,用户需要使用一个em ......
1 字符串比较是否相等用什么方法?
2 equals()和hashCode()的区别?
3 forward和senRedirect区别?
4 servlet生命周期?
5 过滤器的作用
6 JSP包含静态文件的语法
7 JSP注释(至少两个以上)
8 table中border,cellpadding,td中colspan,rowspan的意义
9 js三种弹出窗口 a 警告 b 确认 c 信息 ......
/*作用:用户输入自己的名字,显示一句问候语。
时间:2010年4月20日。
作者:enfang.
*/
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class KeyboardReader //作用:从键盘读入数据
{
private BufferedReader reader;
& ......
最近做spider,java的正则表达式解析出每个网页的超链接,感觉正则真的神通广大!
大概说一下,我的通常用法。
这一不只是解析出 <a href=""> 这部分
String regex = "(<a href=\")([\\S]+)(\")";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sb); //sb是一个html 代 ......
// 整数到字节数组转换
public static byte[] int2bytes(int n) {
byte[] ab = new byte[4];
ab[0] = (byte) (0xff & n);
ab[1] = (byte) ((0xff00 & n) >> 8);
ab[2] = (byte) ((0xff0000 & n) >> 16);
ab[3] = (byte) ((0xff000000 & n) >> 24);
return ab ......