diff options
| author | Jing Yu <jingyu@google.com> | 2011-12-19 16:56:54 -0800 |
|---|---|---|
| committer | Jing Yu <jingyu@google.com> | 2011-12-19 16:56:54 -0800 |
| commit | 40d7cd0fd78fe2004e2a53c4618c148339b02733 (patch) | |
| tree | 5874557a6c86a1f564a03e5f28b266e31bc3759c /gcc-4.6/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java | |
| parent | fe2afdf3f3701489c05d2a7509752d6f0c7616f7 (diff) | |
| download | toolchain_gcc-40d7cd0fd78fe2004e2a53c4618c148339b02733.tar.gz toolchain_gcc-40d7cd0fd78fe2004e2a53c4618c148339b02733.tar.bz2 toolchain_gcc-40d7cd0fd78fe2004e2a53c4618c148339b02733.zip | |
Add gcc-4.6. Synced to @180989
Change-Id: Ie3676586e1d8e3c8cd9f07d022f450d05fa08439
svn://gcc.gnu.org/svn/gcc/branches/google/gcc-4_6-mobile
Diffstat (limited to 'gcc-4.6/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java')
| -rw-r--r-- | gcc-4.6/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/gcc-4.6/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java b/gcc-4.6/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java new file mode 100644 index 000000000..609527cda --- /dev/null +++ b/gcc-4.6/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java @@ -0,0 +1,75 @@ +// Create two threads waiting on a monitor. Interrupt one of them. Does the +// other wake up correctly? + +class Waiter extends Thread +{ + Object monitor; + int thread_num; + boolean interrupted = false; + boolean notified = false; + + Waiter (Object monitor, int thread_num) + { + this.monitor = monitor; + this.thread_num = thread_num; + } + + public void run() + { + synchronized (monitor) + { + System.out.println ("Thread waiting."); + try + { + long start = System.currentTimeMillis(); + monitor.wait(1000); + long time = System.currentTimeMillis() - start; + if (time > 990) + System.out.println ("Error: wait on thread " + thread_num + + " timed out."); + else + notified = true; + } + catch (InterruptedException x) + { + interrupted = true; + } + } + + } +} + +public class Thread_Wait_Interrupt +{ + public static void main(String args[]) + { + Object monitor = new Object(); + Waiter w1 = new Waiter(monitor, 1); + Waiter w2 = new Waiter(monitor, 2); + w1.start(); + w2.start(); + try + { + Thread.sleep(250); + + synchronized (monitor) + { + w1.interrupt(); + monitor.notify(); + } + + w1.join(); + w2.join(); + System.out.println("join ok"); + System.out.println("Thread 1 " + + (w1.interrupted ? "interrupted ok" : "error")); + System.out.println("Thread 2 " + + (w2.notified ? "notified ok" : "error")); + + } + catch (InterruptedException x) + { + System.out.println (x); + } + } +} |
