A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

同步代码块的锁对象是任意对象:(Object obj ; Demo d;)这些都行

同步方法:

把同步关键字synchronized添加到方法上,那么,同步方法的锁对象是

this

同步方法是静态方法,那么这个静态同步方法的锁对象是

类的字节码文件对象

public class SellTicket implements Runnable {
    // 定义100张票
    private int ticket = 100;

    //定义同一把锁
    private Object obj = new Object();

           @Override
                public void run() {
                        while (true) {
                                synchronized (obj) {
                                        if (tickets > 0) {
                                                try {
                                                        Thread.sleep(100);
                                                } catch (InterruptedException e) {
                                                        e.printStackTrace();
                                                }
                                                System.out.println(Thread.currentThread().getName()
                                                                + "正在出售第" + (tickets--) + "张票 ");
                                        }
                                }
                        }
                }
                 private synchronized void sellTicket() {
                                if (tickets > 0) {
                                try {
                                                Thread.sleep(100);
                                } catch (InterruptedException e) {
                                                e.printStackTrace();
                                }
                                System.out.println(Thread.currentThread().getName()
                                                        + "正在出售第" + (tickets--) + "张票 ");
                                }
                }
            private static synchronized void sellTicket() {
                        if (tickets > 0) {
                                try {
                                                Thread.sleep(100);
                                } catch (InterruptedException e) {
                                                e.printStackTrace();
                                }
                                System.out.println(Thread.currentThread().getName()
                                                        + "正在出售第" + (tickets--) + "张票 ");
                        }
                }
                @Override
                public void run() {
                        while (true) {
                                synchronized (SellTicket.class) {
                                        if (tickets > 0) {
                                                try {
                                                        Thread.sleep(100);
                                                } catch (InterruptedException e) {
                                                        e.printStackTrace();
                                                }
                                                System.out.println(Thread.currentThread().getName()
                                                                + "正在出售第" + (tickets--) + "张票 ");
                                        }
                                }
                                x++;
                        }
                }
}
    ```
---------------------
【转载,仅作分享,侵删】
作者:imxlw00
原文:https://blog.csdn.net/imxlw00/article/details/85332151


1 个回复

倒序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马