人力外包网站,网站建设 资产,装饰公司响应式网站建设案例,哪些公司的网站做的漂亮当你需要使用Java线程在多线程环境下进行编程时#xff0c;理解Java的线程周期与线程的状态是非常重要的。通过实现Runnale接口或者继承Thread类#xff0c;我们可以创建线程#xff0c;为了启动一个线程#xff0c;我们需要创建一个Thread对象#xff0c;并且调用它的sta…当你需要使用Java线程在多线程环境下进行编程时理解Java的线程周期与线程的状态是非常重要的。通过实现Runnale接口或者继承Thread类我们可以创建线程为了启动一个线程我们需要创建一个Thread对象并且调用它的start()方法以便以线程的方式来执行run()方法。 Java中的线程生命周期 下面的图展示在Java中线程的不同状态我们可以创建一个Java线程并调用start()方法来启动它但是线程的状态是如何从Running变为Blocked这依赖与操作系统实现的线程调度算法Java对此并没有足够的控制权。 New 当我们创建一个新线程对象的时候需要时候new操作符此时线程的状态便是New。在这个时候线程并不是可被调度的它只是Java语言的一个内部状态。 Runnable 当我们调用Thread对象的start函数时它的状态变为Runnable。 控制权被给予线程调度程序来完成它的执行。 是否立即运行此线程或在运行之前将其保持在可运行线程池中取决于线程调度程序的实现。 Running 线程正在执行时状态变为Running。 线程调度程序从可运行线程池中选择一个线程并将其状态更改为正在运行然后CPU开始执行这个线程。一个线程可以将正在运行的进程状态更改为RunnableDead或Blocked。在该状态时线程将执行run方法的逻辑。 Blocked/Waiting 一个线程可以通过join()方法去等待另外一个线程的执行完成也可以等待一些资源可用例如生产者消费者问题或IO资源此时线程的状态将变为Waiting。 线程等待状态结束后状态变为Runnable并移回到可运行线程池。 Dead 一旦线程完成执行它的状态就变成Dead。 完 转载于:https://www.cnblogs.com/QG-whz/p/8335347.html