我所知道的线程

  • Concurrent(未完成)

  • 创建一个线程

  • extend Thread
  • implements Runnable
工具类创建线程 (未完成)
  • synchronied 修饰方法和修饰代码块(在阿里Java手册中提到能锁代码块就不要所方法尽量提高性能)

  1. 修饰方法时:this 引用的当前实例持有锁
sychronized void method(){...}
  1. 修饰代码块: 指定对象
sychronized(object){...}
  • sleep、wait、join、yield

  1. wait 一定要有锁,当线程wait时,释放锁进入等待队列,用 notify 和 notifyAll 唤醒。wait 和 notify/notifyAll 一定要同步,否则会出现 IllegalMonitorStateException异常。
  2. sleep 是线程进入睡眠状态,持有锁,并不是释放锁。
  3. join 是等待上一个线程结束,相当于收拾好自己的箱子再去干其他事。
  4. yield 是放弃对已经持有锁的代码块/方法,重新竞争,再次持有锁的不一定是上一个持有锁的线程。
  • volatile

volatile其实并不能保证变量的原子性,他其实就是在修改一个变量之后,并不把修改后的写入缓存区,而是直接呈现出来的及时性。

  • 几种设计模式(未完成)

你可能感兴趣的:(我所知道的线程)