1. public class TwoThreads { 2 3. private static Object resource = new Object(); 4. 5. private static void delay(long n) { 6. try { Thread.sleep(n); } 7. catch (Exception e) { System.out.print(”Error “); } 8. } 9 10. public static void main(String[] args) { 11. System.out.print(”StartMain “); 12. new Thread1().start(); 13. delay(1000); 14. Thread t2 = new Thread2(); 15. t2.start(); 16. delay(1000); 17. t2.interrupt 18. delay(1000); 19. System.out.print(”EndMain “); 20. } 21. 22. static class Thread 1 extends Thread { 23. public void run() { 24. synchronized (resource) { 25. System.out.print(”Start1 “); 26. delay(6000); 27. System.out.print(”End1 “); 28. } 29. } 30. } 31. 32. static class Thread2 extends Thread { 33. public void run() { 34. synchronized (resource) { 35. System.out.print(”Start2 “); 36. delay(2000); 37. System.out.print(”End2 “); 38. } 39. } 40. } 41. }