synchronized锁对象

来源:互联网 发布:nodejs数据返回页面 编辑:程序博客网 时间:2024/06/06 02:19

synchronized

当一个线程访问object的一个加锁代码块时,另一个线程仍然可以访问该object中的非加锁代码块。但不能访问加锁的代码块

public class Show {    synchronized public void showA() {        System.out.println("a" + Thread.currentThread().getName());        try {            Thread.sleep(2000);        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        showB();    }    synchronized public void showB(){        System.out.println("B" + Thread.currentThread().getName());        showA();    }}public class ThreadA extends Thread {    boolean flag;    Show aShow;    public ThreadA(boolean flag, Show aShow) {        // TODO Auto-generated constructor stub        this.flag = flag;        this.aShow = aShow;    }    public void run() {        // TODO Auto-generated method stub        super.run();        if (flag) {            aShow.showA();        } else {            aShow.showB();        }    }}public class Text {    public static void main(String[] args) {        // TODO Auto-generated method stub        Show aShow = new Show();        ThreadA nameaA  = new ThreadA(true, aShow);        ThreadA nameB = new ThreadA(false, aShow);nameB.setName("B");        nameaA.setName("A");        nameaA.start();        nameB.start();    }}
原创粉丝点击