异常释放锁的情况
对于web程序,异常的释放锁,很可能意味着程序出现了错误,业务逻辑产生了错误的结果导致了严重的错误,比如:一个队列10个任务,很多对象都会去等待第1个
队列正常秩序产生的结果返回再次释放锁,那么其中一个发生了异常,导致业务没执行完毕,就释放锁的资源。
package demo1;
/**
*
* Created by liudan on 2017/6/5.
*/
public class MyThread5_synchronized2 {
private int i=0;
public synchronized void operation(){
while (true){
try {
i++;
Thread.sleep(200);
System.err.println("∠"+Thread.currentThread().getName().toString()+",->\t"+i);
if (i==8){
Integer.parseInt("a");
//throw new RuntimeException("执行错误");
}
} catch (Exception e) {
e.printStackTrace();
System.err.println("\t\t\t\terror is :"+i);
continue;//应用storm 场景,继续执行,后续手动去操作这个任务
//break; 立即停止执行,并在此处加入一个日志监控
}
}
}
public static void main(String[] args){
final MyThread5_synchronized2 s = new MyThread5_synchronized2();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
s.operation();
}
},"t-1");
t.start();
}
}