线程有哪些状态与影响的命令

简介: 笔记


线程有5种状态

  1. new,创建线程,尚未启动
  2. Runable,此状态的线程有可能正在执行,也有可能正在等待cpu为它分配时间片
  3. waiting,处于此状态的线程不会被分配时间片,必须要等待被其他线程显式的唤醒,notify或notify all
  4. timed waiting ,处于此状态的线程不会被分配时间片,不过无须等待其它线程显式的唤醒,在一定时间后会由系统自动唤醒
  5. blocked,线程被阻塞了,必须要等待获取锁
  6. terminated,线程已执行结束,如一个线程的run()函数执行完毕后线程就进入死亡状态

影响的命令:

  • run、start
    需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。
  • wait
    当前线程暂停执行并释放对象锁标志,让其他线程可以进入Synchronized数据块,当前线程被放入对象等待池中
  • notify
    唤醒一个线程
  • notifyAll
    唤醒所有线程
  • sleep
    休眠一段时间后,会自动唤醒。但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不能访问共享数据。注意该方法要捕获异常
  • join
    当前线程停下来等待,直至另一个调用join方法的线程终止,线程在被激活后不一定马上就运行,而是进入到可运行线程的队列中
  • yield
    停止当前线程,让同等优先权的线程运行。如果没有同等优先权的线程,那么yield()方法将不会起作用
  • daemon

操会作系统维护一个ready queue(就绪线程队列),某一时刻cpu只为ready queue中位于队列头部的线程服务。

参考资料:

http://www.jianshu.com/p/c9f847101fae

相关文章
|
2月前
|
Java
线程的六种状态
线程的六种状态
|
1月前
|
Java API 调度
线程的生命周期和状态控制
线程的生命周期和状态控制
|
1月前
|
Java 程序员
Java多线程编程是指在一个进程中创建并运行多个线程,每个线程执行不同的任务,并行地工作,以达到提高效率的目的
【6月更文挑战第18天】Java多线程提升效率,通过synchronized关键字、Lock接口和原子变量实现同步互斥。synchronized控制共享资源访问,基于对象内置锁。Lock接口提供更灵活的锁管理,需手动解锁。原子变量类(如AtomicInteger)支持无锁的原子操作,减少性能影响。
34 3
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
2591 0
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
|
2月前
|
Java
线程的666种状态
线程的666种状态
10 1
|
2月前
|
Java 调度
|
10月前
|
Go 数据库
sync.Once-保证运行期间的某段代码只会执行一次
sync.Once-保证运行期间的某段代码只会执行一次
60 0
|
11月前
|
Java 调度
线程包括哪些状态,状态之间是如何变化的
线程包括哪些状态,状态之间是如何变化的
64 0
|
11月前
|
调度
线程的几种状态
线程的几种状态
|
Java 程序员
同步模式之顺序控制线程执行
同步模式是指在多线程编程中,为了保证线程之间的协作和正确性,需要对线程的执行顺序进行控制。顺序控制线程执行是一种同步模式,它通过控制线程的等待和唤醒来实现线程的有序执行。
117 0
同步模式之顺序控制线程执行