天天看点

synchronized 使用 字符串 作为线程对象锁实现同步

package com.yqq.app12;

/**
 * @Author yqq
 * @Date 2021/11/28 01:03
 * @Version 1.0
 */

/**
 * 程序员类
 */
class Programmer{
    private String name;
    public Programmer(String name){
        this.name = name;
    }
    /**
     * 去厕所
     */
    public void toilet(){
        synchronized ("str"){
            try {
                System.out.println(this.name+" 偷偷打开厕所门");
                Thread.sleep(500);
                System.out.println(this.name+" 开始使用卫生间");
                Thread.sleep(500);
                System.out.println(this.name+" 洗手");
                Thread.sleep(500);
                System.out.println(this.name+" 开开心心的离开厕所");
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}
/**
 * 去厕所的线程
 */
class Toilet extends Thread{
    private Programmer programmer;
    public Toilet(Programmer programmer){
        this.programmer = programmer;
    }
    @Override
    public void run() {
        this.programmer.toilet();
    }
}

public class synchronizedThread {
    public static void main(String[] args) {
//        Programmer programmer = new Programmer("易青青");
//        new Computer(programmer).start();
//        new Worker(programmer).start();
        Programmer worker = new Programmer("冯锐");
        Programmer leader = new Programmer("吴军");
        new Toilet(worker).start();
        new Toilet(leader).start();
    }
}