zoukankan      html  css  js  c++  java
  • 2.1.7出现异常,锁自动释放

    当一个线程执行代码的时候出现异常,则其所持有的锁会自动释放。

    package com.cky.bean;
    
    /**
     * Created by chenkaiyang on 2017/12/5.
     */
    public class Service {
       synchronized public void testMethod() {
           if (Thread.currentThread().getName().equals("A")) {
               System.out.println(Thread.currentThread().getName() +"  &  aaaaaaa");
               Integer.parseInt("a");
               System.out.println("end");
           } else {
               System.out.println(Thread.currentThread().getName() +"   &  bbbbb");
           }
        }
    
    
    }
    package com.cky.thread;
    
    import com.cky.bean.Service;
    
    /**
     * Created by chenkaiyang on 2017/12/5.
     */
    public class ThreadA extends Thread{
        private Service service;
        public ThreadA(Service service) {
            super();
            this.service = service;
        }
    
        @Override
        public void run() {
            super.run();
            service.testMethod();
        }
    }
    package com.cky.thread;
    
    import com.cky.bean.Service;
    
    /**
     * Created by chenkaiyang on 2017/12/5.
     */
    public class ThreadB extends  Thread{
        private Service service;
        public ThreadB(Service service) {
            super();
            this.service = service;
        }
    
        @Override
        public void run() {
            super.run();
            service.testMethod();
        }
    }
    package com.cky.test;
    
    import com.cky.bean.Service;
    import com.cky.thread.ThreadA;
    import com.cky.thread.ThreadB;
    
    /**
     * Created by chenkaiyang on 2017/12/2.
     */
    public class Test {
        public static void main(String[] args){
            try {
                Service service = new Service();
                ThreadA threadA = new ThreadA(service);
                threadA.setName("A");
                threadA.start();
                Thread.sleep(500);
                ThreadB threadB = new ThreadB(service);
                threadB.setName("B");
                threadB.start();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
    
        }
    }
    D:itjdk1.8injava -Didea.launcher.port=7539 "-Didea.launcher.bin.path=D:itideaIntelliJ IDEA 2016.3.3in" -Dfile.encoding=UTF-8 -classpath "D:itjdk1.8jrelibcharsets.jar;D:itjdk1.8jrelibdeploy.jar;D:itjdk1.8jrelibextaccess-bridge-64.jar;D:itjdk1.8jrelibextcldrdata.jar;D:itjdk1.8jrelibextdnsns.jar;D:itjdk1.8jrelibextjaccess.jar;D:itjdk1.8jrelibextjfxrt.jar;D:itjdk1.8jrelibextlocaledata.jar;D:itjdk1.8jrelibext
    ashorn.jar;D:itjdk1.8jrelibextsunec.jar;D:itjdk1.8jrelibextsunjce_provider.jar;D:itjdk1.8jrelibextsunmscapi.jar;D:itjdk1.8jrelibextsunpkcs11.jar;D:itjdk1.8jrelibextzipfs.jar;D:itjdk1.8jrelibjavaws.jar;D:itjdk1.8jrelibjce.jar;D:itjdk1.8jrelibjfr.jar;D:itjdk1.8jrelibjfxswt.jar;D:itjdk1.8jrelibjsse.jar;D:itjdk1.8jrelibmanagement-agent.jar;D:itjdk1.8jrelibplugin.jar;D:itjdk1.8jrelib
    esources.jar;D:itjdk1.8jrelib
    t.jar;F:springboot	hreaddemooutproduction	hreaddemo;D:itideaIntelliJ IDEA 2016.3.3libidea_rt.jar" com.intellij.rt.execution.application.AppMain com.cky.test.Test
    A  &  aaaaaaa
    Exception in thread "A" java.lang.NumberFormatException: For input string: "a"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Integer.parseInt(Integer.java:580)
        at java.lang.Integer.parseInt(Integer.java:615)
        at com.cky.bean.Service.testMethod(Service.java:10)
        at com.cky.thread.ThreadA.run(ThreadA.java:18)
    B   &  bbbbb
    
    Process finished with exit code 0

     线程a出现异常后释放锁,这时线程b可进入执行方法

  • 相关阅读:
    FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
    用户和组管理2
    一次性show 出所有配置
    RHCE7-学习里程 root 密码重置换
    RHCE7 学习里程-4用户权限,简单进程管理
    RHCE7 学习里程-3基本命令
    RHCE7 学习里程-2.telnet 服务配置
    RHCE7 学习里程-1.配置IP,DNS
    SDN openflow 学习小得
    思科ASA 基础学习
  • 原文地址:https://www.cnblogs.com/edison20161121/p/7967440.html
Copyright © 2011-2022 走看看