Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Date;
- public class Test {
- public static Long obj1 = new Long(0);
- public static Long obj2 = new Long(0);
- public static void main(String[] args) {
- LockAa la = new LockAa();
- new Thread(la).start();
- LockBb lb = new LockBb();
- new Thread(lb).start();
- }
- }
- class LockAa implements Runnable {
- public void run() {
- try {
- System.out.println(new Date().toString() + " LockA 开始执行");
- while (true) {
- synchronized (Test.obj1) {
- // Test.obj1 = Test.obj1 / 10 * 10 + 10;
- System.out.println(new Date().toString() + " LockA 锁住 obj1" + Test.obj1);
- Thread.sleep(5000);
- synchronized (Test.obj2) {
- // Test.obj2 = Test.obj2 / 10 * 10 + 10;
- System.out.println(new Date().toString() + " LockA 锁住 obj2" + Test.obj2);
- Thread.sleep(5000); // do something
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- class LockBb implements Runnable {
- public void run() {
- try {
- System.out.println(new Date().toString() + " LockB 开始执行");
- while (true) {
- synchronized (Test.obj2) {
- // Test.obj2 += 5;
- System.out.println(new Date().toString() + " LockB 锁住 obj2" + Test.obj2);
- Thread.sleep(5000);
- synchronized (Test.obj1) {
- // Test.obj1 += 5;
- System.out.println(new Date().toString() + " LockB 锁住 obj1" + Test.obj1);
- Thread.sleep(5000); // do something
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
Add Comment
Please, Sign In to add comment