码迷,mamicode.com
首页 > 其他好文 > 详细

jvm内置锁synchronized不能被中断

时间:2018-10-05 00:54:45      阅读:338      评论:0      收藏:0      [点我收藏+]

标签:zed   esc   code   desc   tac   ble   rup   ati   string   

很久没看技术书籍了,今天看了一下《七周七并发模型》前面两章讲的java,写的还是有深度的。看到了一个有demo,说jvm内置锁synchronized是不能被中断的。照着书上写了个demo,验证了一下,是不能被中断

/**
 * @Author: 
 * @Description: jdk内置锁不能被中断
 * @Date: Created in : 2018/10/4 下午11:34
 **/
public class Uninterruptible {
    private static final Object o1 = new Object();
    private static final Object o2 = new Object();

    public static void main(String[] args) throws InterruptedException {
        t1.start();
        t2.start();
        Thread.sleep(2000);
        System.out.println("before interrupt");
        t1.interrupt();
        t2.interrupt();
        System.out.println("end interrupt");
        t1.join();
        t2.join();
    }

    static Thread t1 = new Thread(() -> {
       synchronized (o1){
           try {
               System.out.println("start t1");
               Thread.sleep(1000);
               synchronized (o2){
                   System.out.println("t1 lock o2");
               }
           } catch (InterruptedException e) {
               System.out.println("t1 interrupted");
               e.printStackTrace();
           }
       }
    });

    static Thread t2 = new Thread(() -> {
       synchronized (o2){
           try {
               System.out.println("start t2");
               Thread.sleep(1000);
               synchronized (o1){
                   System.out.println("t2 lock o1");
               }
           } catch (InterruptedException e) {
               System.out.println("t2 intterrupted");
               e.printStackTrace();
           }
       }
    });
}

 

jvm内置锁synchronized不能被中断

标签:zed   esc   code   desc   tac   ble   rup   ati   string   

原文地址:https://www.cnblogs.com/luckygxf/p/9743847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!