1 32 package net.sf.retrotranslator.runtime.java.util.concurrent.locks; 33 34 import java.util.concurrent.locks.LockSupport ; 35 import junit.framework.TestCase; 36 37 40 public class LockSupport_TestCase extends TestCase { 41 42 private static final int SLEEP_TIME = 100; 43 44 private abstract class ExecutingThread extends Thread { 45 46 private Throwable result; 47 48 protected abstract void execute() throws Throwable ; 49 50 public final void run() { 51 try { 52 execute(); 53 } catch (Throwable throwable) { 54 result = throwable; 55 throwable.printStackTrace(); 56 } 57 } 58 59 public void await() throws Throwable { 60 join(); 61 if (result != null) { 62 throw result; 63 } 64 } 65 66 } 67 68 public void testPark_ParkUnpark() throws Throwable { 69 ExecutingThread thread = new ExecutingThread() { 70 protected void execute() throws Throwable { 71 LockSupport.park(); 72 } 73 }; 74 thread.start(); 75 Thread.sleep(SLEEP_TIME); 76 LockSupport.unpark(thread); 77 thread.await(); 78 } 79 80 public void testPark_UnparkPark() throws Throwable { 81 ExecutingThread thread = new ExecutingThread() { 82 protected void execute() throws Throwable { 83 Thread.sleep(SLEEP_TIME); 84 LockSupport.park(); 85 } 86 }; 87 thread.start(); 88 LockSupport.unpark(thread); 89 thread.await(); 90 } 91 92 public void testPark_ParkInterrupt() throws Throwable { 93 ExecutingThread thread = new ExecutingThread() { 94 protected void execute() throws Throwable { 95 LockSupport.park(); 96 } 97 }; 98 thread.start(); 99 Thread.sleep(SLEEP_TIME); 100 thread.interrupt(); 101 thread.await(); 102 } 103 104 public void testPark_InterruptPark() throws Throwable { 105 ExecutingThread thread = new ExecutingThread() { 106 protected void execute() throws Throwable { 107 Thread.currentThread().interrupt(); 108 LockSupport.park(); 109 } 110 }; 111 thread.start(); 112 thread.await(); 113 } 114 115 public void testParkNanos() throws Throwable { 116 ExecutingThread thread = new ExecutingThread() { 117 protected void execute() throws Throwable { 118 Thread.currentThread().interrupt(); 119 LockSupport.parkNanos(1001000); 120 } 121 }; 122 thread.start(); 123 thread.await(); 124 } 125 126 public void testParkUntil() throws Throwable { 127 ExecutingThread thread = new ExecutingThread() { 128 protected void execute() throws Throwable { 129 Thread.currentThread().interrupt(); 130 LockSupport.parkUntil(System.currentTimeMillis() + 500); 131 } 132 }; 133 thread.start(); 134 thread.await(); 135 } 136 137 } | Popular Tags |