美文网首页
线程同步

线程同步

作者: Android一行代码 | 来源:发表于2020-08-27 18:48 被阅读0次
    synchronized与Lock的区别
    - synchronized 是java jvm关键字     LOck是java 的一个接口
    - Lock和synchronized有一点非常大的不同,采用synchronized不需要用户去手动释放
    
    
    public interface Lock {
        void lock();
        void lockInterruptibly() throws InterruptedException;
        boolean tryLock();
        boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
        void unlock();
        Condition newCondition();
    }
    

    ![avatar][(https://img.haomeiwen.com/i2311881/cdbbe2ac586a0d43.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

    Thread的几个重要方法:

    • start()方法,调用该方法开始执行该线程;
    • stop()方法,调用该方法强制结束该线程执行;
    • join方法,调用该方法等待该线程结束。
    • sleep()方法,调用该方法该线程进入等待。
    • run()方法,调用该方法直接执行线程的run()方法,但是线程调用- start()方法时也会运行run()方法,区别就是一个是由线程调度-- 运行run()方法,一个是直接调用了线程中的run()方法!!

    wait()与notify()方法是Object的方法,不是Thread的方法,wait()与notify()会配合使用,分别表示线程挂起和线程恢复。

    • wait()与sleep()的区别,简单来说wait()会释放对象锁而sleep()不会释放对象锁。

    线程总共有5大状态:

    • 新建状态:新建线程对象,并没有调用start()方法之前
    • 就绪状态:调用start()方法之后线程就进入就绪状态,但是并不-
      是说只要调用start()方法线程就马上变为当前线程,在变为当前线程之前都是为就绪状态。值得一提的是,线程在睡眠和挂起中恢复的时候也会进入就绪状态哦。
    • 运行状态:线程被设置为当前线程,开始执行run()方法。就是线程进入运行状态
    • 阻塞状态:线程被暂停,比如说调用sleep()方法后线程就进入阻塞状态
    • 死亡状态:线程执行结束

    相关文章

      网友评论

          本文标题:线程同步

          本文链接:https://www.haomeiwen.com/subject/rolhsktx.html