线程8锁练习

线程锁的8个问题

public class TestThread8Monitor {
    /**
     * 1、两个普通同步方法,两个线程,打印输出 //one two
     * 2、给getOne新增sleep方法(以下测试getOne的sleep方法不要去掉),打印输出 //one two
     * 3、新增普通方法getThree,打印输出//three one two
     * 4、两个普通同步方法,两个number对象,两个线程 //two one
     * 5、更改getOne为静态同步方法,打印输出//two one
     * 6、两个静态同步方法,一个number对象,两个线程,打印输出//one two
     * 7、一个静态同步方法,一个非静态同步方法,两个number对象,两个线程,打印输出//two one
     * 8、两个静态同步方法,两个number对象,两个线程,打印输出//one two
     * 线程8锁的关键
     *     静态方法非静态方法的锁不同。
     *     某一时刻,只能有一个线程持有锁,无论几个方法。
     */
    public static void main(String[] args) {
        Number number = new Number();
        Number number2 = new Number();
        new Thread(new Runnable() {
            @Override
            public void run() {
                Number.getOne();
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                //number2.getTwo();
                number2.getTwo();
            }
        }).start();

//        new Thread(new Runnable() {
//            @Override
//            public void run() {
//                number.getThree();
//            }
//        }).start();
    }
}
class Number {
    public static synchronized void getOne() {
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("one");
    }
    public synchronized void getTwo() {
        System.out.println("two");
    }
    public void getThree() {
        System.out.println("three");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值