多线程

2021-03-31  本文已影响0人  迷迷糊糊的番薯

实现多线程

1、继承Thread类,重写run方法
2、实现Runnable接口

线程的状态

新建状态(New) :new Thread()后就进入新建状态。
就绪状态(Runnable):start()启动线程后处于就绪状态。
运行状态(Running):线程获取cpu权限进行执行。只能从就绪状态进入运行状态。
阻塞状态(Blocked):
(1)等待阻塞:wait() (可以由notify唤醒)
(2)同步阻塞:synchronized()同步锁
(3)其他阻塞:sleep、join等。
sleep和wait的区别,sleep不会释放锁,wait释放锁。
死亡状态(Dead):

synchronized是一种同步锁
synchronized可以修饰方法、代码块、类,是隐式锁,出了作用域会自动释放
lock是显式锁,需要手动开启和关闭锁

    private final ReentrantLock lock = new ReentrantLock();
    public void method(){
        lock.lock();
        try {
//            保证线程安全的代码
        }
        finally {
//            如果同步代码有异常,要把unlock写到finally中(一般直接写上)
            lock.unlock();
        }
    }
上一篇下一篇

猜你喜欢

热点阅读