1. 程式人生 > 實用技巧 >AbstractQueuedSynchronizer之parkAndCheckInterrupt函式

AbstractQueuedSynchronizer之parkAndCheckInterrupt函式

函式parkAndCheckInterrupt()阻塞呼叫著執行緒,返回時,將指示是否因為中斷而返回!

private final boolean parkAndCheckInterrupt() {
        LockSupport.park(this);
        return Thread.interrupted();
    }

測試程式碼:

import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.LockSupport;

public class ParkAndCheckInterrupt {

    
private final boolean parkAndCheckInterrupt() { LockSupport.park(this); return Thread.interrupted(); } public static void main(String[] args) throws InterruptedException { ParkAndCheckInterrupt SPCK = new ParkAndCheckInterrupt(); Thread thread = new Thread(new
Runnable() { @Override public void run() { System.out.println("Before Park!"); if (SPCK.parkAndCheckInterrupt()) { System.out.println("中斷返回!"); }else { System.out.println("Unpark返回!"); } } }); thread.start(); TimeUnit.SECONDS.sleep(
1); thread.interrupt();
     //
LockSupport.unpark(thread);
   } 
}