本篇文章给大家谈谈java一个线程获取状态,以及java监听线程状态对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享java一个线程获取状态的知识,其中也会对java监听线程状态进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java获取当前线程状态。
java线程
java一个线程获取状态的状态有下面几种状态
java一个线程获取状态:
/**
* Thread state for a thread which has not yet started.
*/
NEW,
/**
* Thread state for a runnable thread. A thread in the runnable
* state is executing in the Java virtual machine but it may
* be waiting for other resources from the operating system
* such as processor.
*/
RUNNABLE,
/**
* Thread state for a thread blocked waiting for a monitor lock.
* A thread in the blocked state is waiting for a monitor lock
* to enter a synchronized block/method or
* reenter a synchronized block/method after calling
* {@link Object#wait() Object.wait}.
*/
BLOCKED,
/**
* Thread state for a waiting thread.
* A thread is in the waiting state due to calling one of the
* following methods:
* <ul
* <li{@link Object#wait() Object.wait} with no timeout</li
* <li{@link #join() Thread.join} with no timeout</li
* <li{@link LockSupport#park() LockSupport.park}</li
* </ul
*
* <pA thread in the waiting state is waiting for another thread to
* perform a particular action.
*
* For example, a thread that has called <ttObject.wait()</tt
* on an object is waiting for another thread to call
* <ttObject.notify()</tt or <ttObject.notifyAll()</tt on
* that object. A thread that has called <ttThread.join()</tt
* is waiting for a specified thread to terminate.
*/
WAITING,
/**
* Thread state for a waiting thread with a specified waiting time.
* A thread is in the timed waiting state due to calling one of
* the following methods with a specified positive waiting time:
* <ul
* <li{@link #sleep Thread.sleep}</li
* <li{@link Object#wait(long) Object.wait} with timeout</li
* <li{@link #join(long) Thread.join} with timeout</li
* <li{@link LockSupport#parkNanos LockSupport.parkNanos}</li
* <li{@link LockSupport#parkUntil LockSupport.parkUntil}</li
* </ul
*/
TIMED_WAITING,
/**
* Thread state for a terminated thread.
* The thread has completed execution.
*/
TERMINATED;
基于java 线程的几种状态
下面是java 线程的5种状态:
1、新建(new)
新建一个线程的对象。
2、可运行(runable)
线程对象创建后,其他线程调用该线程的start方法。或者该线程位于可运行线程池中等待被线程调用,已获取cpu的使用权。
3、运行(running)
可运行的线程获取了cpu的使用权,执行程序代码
4、阻塞(block)
由于某些原因该线程放弃了cpu的使用权。停止执行。除非线程进入可运行的状态,才会有机会获取cpu的使用权。
(1)等待阻塞:运行中的线程执行wait方法,这时候该线程会被放入等待队列。
(2)同步阻塞:运行中的线程获取同步锁,如果该同步锁被别的线程占用,这个线程会成被放入锁池,等待其他线程释放同步锁。
(3)其他阻塞:运行的线程执行sleep或者join方法这个线程会成为阻塞状态。当sleep超时,join等待线程终止,该线程会进入可运行状态。
5、死亡(dead)
线程run mian 执行完毕后,或者因为某些异常产生退出了 run 方法,该线程的生命周期结束。
用c语言 java 来获取当前(进程)线程状态
通过调用Thread.getState()方法获取当前线程的状态。以下是我的代码,可以直接编译运行。
public class Test {
public static void main(String[] args) {
new NewThread().start(); //启动线程
}
}
class NewThread extends Thread{
public NewThread() {
super("NewThread"); //定义当前线程的名称为NewThread
}
@Override
public void run() {
System.out.println("当前线程:"+currentThread().getName()+"运行状态为:"+getState()); //打印线程的运行状态
}
}
JavaThread线程的状态有哪些?
[1]新生状态(New):当一个线程的实例被创建即使用new关键字和Thread类或其子类创建一个线程对象后,此时该线程处于新生(new)状态,处于新生状态的线程有自己的内存空间,但该线程并没有运行,此时线程还不是活着的(notalive)。
[2]就绪状态(Runnable):通过调用线程实例的start()方法来启动线程使线程进入就绪状态(runnable);处于就绪状态的线程已经具备了运行条件,但还没有被分配到CPU即不一定会被立即执行,此时处于线程就绪队列,等待系统为其分配CPCU,等待状态并不是执行状态;此时线程是活着的(alive)。
[3]运行状态(Running):一旦获取CPU(被JVM选中),线程就进入运行(running)状态,线程的run()方法才开始被执行;在运行状态的线程执行自己的run()方法中的操作,直到调用其他的方法而终止、或者等待某种资源而阻塞、或者完成任务而死亡;如果在给定的时间片内没有执行结束,就会被系统给换下来回到线程的等待状态;此时线程是活着的(alive)。
[4]阻塞状态(Blocked):通过调用join()、sleep()、wait()或者资源被暂用使线程处于阻塞(blocked)状态;处于Blocking状态的线程仍然是活着的(alive)。
[5]死亡状态(Dead):当一个线程的run()方法运行完毕或被中断或被异常退出,该线程到达死亡(dead)状态。此时可能仍然存在一个该Thread的实例对象,当该Thread已经不可能在被作为一个可被独立执行的线程对待了,线程的独立的callstack已经被dissolved。一旦某一线程进入Dead状态,他就再也不能进入一个独立线程的生命周期了。对于一个处于Dead状态的线程调用start()方法,会出现一个运行期(runtimeexception)的异常;处于Dead状态的线程不是活着的(notalive)。
关于java一个线程获取状态和java监听线程状态的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
java一个线程获取状态的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java监听线程状态、java一个线程获取状态的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~