Guest User

Untitled

a guest
Feb 16th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. import java.util.Date;
  2.  
  3. public class Test {
  4. public static Long obj1 = new Long(0);
  5. public static Long obj2 = new Long(0);
  6.  
  7. public static void main(String[] args) {
  8. LockAa la = new LockAa();
  9. new Thread(la).start();
  10. LockBb lb = new LockBb();
  11. new Thread(lb).start();
  12. }
  13. }
  14.  
  15. class LockAa implements Runnable {
  16. public void run() {
  17. try {
  18. System.out.println(new Date().toString() + " LockA 开始执行");
  19. while (true) {
  20. synchronized (Test.obj1) {
  21. // Test.obj1 = Test.obj1 / 10 * 10 + 10;
  22. System.out.println(new Date().toString() + " LockA 锁住 obj1" + Test.obj1);
  23. Thread.sleep(5000);
  24.  
  25. synchronized (Test.obj2) {
  26. // Test.obj2 = Test.obj2 / 10 * 10 + 10;
  27. System.out.println(new Date().toString() + " LockA 锁住 obj2" + Test.obj2);
  28. Thread.sleep(5000); // do something
  29. }
  30. }
  31. }
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. }
  35. }
  36. }
  37.  
  38. class LockBb implements Runnable {
  39. public void run() {
  40. try {
  41. System.out.println(new Date().toString() + " LockB 开始执行");
  42. while (true) {
  43. synchronized (Test.obj2) {
  44. // Test.obj2 += 5;
  45. System.out.println(new Date().toString() + " LockB 锁住 obj2" + Test.obj2);
  46. Thread.sleep(5000);
  47.  
  48. synchronized (Test.obj1) {
  49. // Test.obj1 += 5;
  50. System.out.println(new Date().toString() + " LockB 锁住 obj1" + Test.obj1);
  51. Thread.sleep(5000); // do something
  52. }
  53. }
  54. }
  55. } catch (Exception e) {
  56. e.printStackTrace();
  57. }
  58. }
  59. }
Add Comment
Please, Sign In to add comment