jvm內置鎖synchronized不能被中斷


很久沒看技術書籍了,今天看了一下《七周七並發模型》前面兩章講的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();
           }
       }
    });
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM