6.异常释放锁的情况

异常释放锁的情况

    对于web程序,异常的释放锁,很可能意味着程序出现了错误,业务逻辑产生了错误的结果导致了严重的错误,比如:一个队列10个任务,很多对象都会去等待第1个
    队列正常秩序产生的结果返回再次释放锁,那么其中一个发生了异常,导致业务没执行完毕,就释放锁的资源。
  1. package demo1;
  2. /**
  3. *
  4. * Created by liudan on 2017/6/5.
  5. */
  6. public class MyThread5_synchronized2 {
  7. private int i=0;
  8. public synchronized void operation(){
  9. while (true){
  10. try {
  11. i++;
  12. Thread.sleep(200);
  13. System.err.println("∠"+Thread.currentThread().getName().toString()+",->\t"+i);
  14. if (i==8){
  15. Integer.parseInt("a");
  16. //throw new RuntimeException("执行错误");
  17. }
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. System.err.println("\t\t\t\terror is :"+i);
  21. continue;//应用storm 场景,继续执行,后续手动去操作这个任务
  22. //break; 立即停止执行,并在此处加入一个日志监控
  23. }
  24. }
  25. }
  26. public static void main(String[] args){
  27. final MyThread5_synchronized2 s = new MyThread5_synchronized2();
  28. Thread t = new Thread(new Runnable() {
  29. @Override
  30. public void run() {
  31. s.operation();
  32. }
  33. },"t-1");
  34. t.start();
  35. }
  36. }
posted @ 2017-08-10 02:12  逍遥叹!!  阅读(366)  评论(0编辑  收藏  举报