JAVA 线程 虚拟锁

来源:互联网 发布:linux高级工程师招聘 编辑:程序博客网 时间:2024/06/05 09:43

自己比照写的测试例子:

目的就是为了解决一个类中两个同步方法,会产生不必要的资源竞争和等待。

实际就是用同步代码块去实现,这个两个方法本身不是同步方法,就不会对当前类对象产生资源竞争。

而两个方法中的同步代码块锁定的对象,又不是一个对象,所以...

class Test12{private String lock1 = "1";private String lock2 = "2";public void a(){try{synchronized(lock1){Thread.sleep(1000);System.out.println("a");Thread.sleep(1000);}}catch(Exception e){e.printStackTrace();}}public void b(){try{synchronized(lock2){System.out.println("b");}}catch(Exception e){e.printStackTrace();}}public static void main(String args[]){class T extends Thread{private Test12 t12;public T(Test12 t12){this.t12 = t12;}public void run(){this.t12.a();}}class Tt extends Thread{private Test12 t12;public Tt(Test12 t12){this.t12 = t12;}public void run(){this.t12.b();}}Test12 t12 = new Test12();new T(t12).start();//new T(t12).start();new Tt(t12).start();}}

原创粉丝点击