美文网首页
线程同步

线程同步

作者: 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