package com.brianway.learning.java.multithread.lock.example8; /** * Created by Brian on 2016/4/15. */ /** * P228 * 测试方法 void lockInterruptibly() * 作用:如果当前线程未被中断,则获取锁定,如果已经被中断则出现异常。 */ public class Run8_lockInterruptibly2 { public static void main(String[] args) throws InterruptedException { final Service2 service = new Service2(); Runnable runnable = new Runnable() { public void run() { service.waitMethod(); } }; Thread threadA = new Thread(runnable); threadA.setName("A"); threadA.start(); Thread.sleep(500); Thread threadB = new Thread(runnable); threadB.setName("B"); threadB.start(); threadB.interrupt(); System.out.println("main end"); } } /* 输出: lock begin A java.lang.InterruptedException at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220) at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335) at com.brianway.learning.java.multithread.lock.example8.Service2.waitMethod(Service2.java:15) at com.brianway.learning.java.multithread.lock.example8.Run8_lockInterruptibly2$1.run(Run8_lockInterruptibly2.java:17) at java.lang.Thread.run(Thread.java:745) main end lock end A ----------------------------- lock begin A main end java.lang.InterruptedException at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220) at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335) at com.brianway.learning.java.multithread.lock.example8.Service2.waitMethod(Service2.java:15) at com.brianway.learning.java.multithread.lock.example8.Run8_lockInterruptibly2$1.run(Run8_lockInterruptibly2.java:17) at java.lang.Thread.run(Thread.java:745) lock end A */