jvm內置鎖synchronized不能被中斷
阿新 • • 發佈:2018-10-05
java stack sync obj fin ble 中斷 tst bsp
很久沒看技術書籍了,今天看了一下《七周七並發模型》前面兩章講的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 finalObject 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不能被中斷