--- /dev/null
+public class threadInterrupt {
+ public static class firstthread implements Runnable {
+ private threadInterrupt s;
+
+ public firstthread(threadInterrupt s_) {
+ s = s_;
+ }
+ public void run() {
+ try {
+ synchronized (s.o1) {
+ System.out.println("first thread!");
+ Thread.sleep(500);
+ System.out.println("interrupting");
+ s.t2.interrupt();
+ System.out.println("leaving");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public static class secondthread implements Runnable {
+ private threadInterrupt s;
+
+ public secondthread(threadInterrupt s_) {
+ s = s_;
+ }
+ public void run() {
+ try {
+ Thread.sleep(250);
+ synchronized (s.o1) {
+ System.out.println("second thread!");
+ s.o1.wait();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public Object o1 = new Object();
+ public Thread t1 = null;
+ public Thread t2 = null;
+
+ public static void main(String args[]) {
+ System.out.println("should exit with java.lang.InterruptedException");
+ threadInterrupt s = new threadInterrupt();
+ firstthread r1 = new firstthread(s);
+ secondthread r2 = new secondthread(s);
+
+ s.t1 = new Thread(r1, "a");
+ s.t2 = new Thread(r2, "b");
+ s.t1.start();
+ s.t2.start();
+ }
+}
+
+/*
+ * These are local overrides for various environment variables in Emacs.
+ * Please do not remove this and leave it at the end of the file, where
+ * Emacs will automagically detect them.
+ * ---------------------------------------------------------------------
+ * Local variables:
+ * mode: java
+ * indent-tabs-mode: t
+ * c-basic-offset: 4
+ * tab-width: 4
+ * End:
+ * vim:noexpandtab:sw=4:ts=4:
+ */