java中线程的可用状态有哪些

Java中线程的可用状态有下面几种:

  1. 就绪(Runnable):线程准备运行,不一定立马就能开始执行。回

  2. 运行中(Running):进程正在执行线程的答代码

  3. 等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。

  4. 睡眠中(Sleeping):线程被强制睡眠。

  5. I/O阻塞(BlockedonI/O):等待I/O操作完成。

  6. 同步阻塞(BlockedonSynchronization):等待获取锁。

  7. 死亡(Dead):线程完成了执行。

❷ java多线程有哪些状态

初始态:一个线程调用了new方法之后,并在调用start方法之前的所处状态。
就绪:一旦线程调用了start 方法,线程就转到Runnable 状态,
阻塞/ NonRunnable:线程处于阻塞/NonRunnable状态,这是由两种可能性造成的:要么是因挂起而暂停的,要么是由于某些原因而阻塞的,例如包括等待IO请求的完成。
停止/退出:线程转到退出状态,这有两种可能性,要么是run方法执行结束,要么是调用了stop方法。

❸ 请问java的线程,有多少种运行状态

线程在执行过程中,可以处于下面几种状态:
就绪(Runnable):线程准备运行,不一定内立马就能开始执行。容
运行中(Running):进程正在执行线程的代码。
等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。
睡眠中(Sleeping):线程被强制睡眠。
I/O阻塞(Blocked on I/O):等待I/O操作完成。
同步阻塞(Blocked on Synchronization):等待获取锁。
死亡(Dead):线程完成了执行。

❹ java多线程有哪些状态

初始态:一个线程调用了new方法之后,并在调用start方法之前的所处状态。

就绪:一旦线程调用了start 方法,线程就转到Runnable 状态。

❺ java中线程有几种状态图解

1. NEW, 这个最简单了,

static void NEW() {
Thread t = new Thread ();
System. out.println(t.getState());
}

输出NEW

2. RUNNABLE, 也简单, 让一个thread start, 同时代码里面不要sleep或者wait等

private static void RUNNABLE() {
Thread t = new Thread(){

public void run(){
for(int i=0; i<Integer.MAX_VALUE; i++){
System. out.println(i);
}
}

};

t.start();
}

3. BLOCKED, 这个就必须至少两个线程以上, 然后互相等待synchronized 块

private static void BLOCKED() {

final Object lock = new Object();

Runnable run = new Runnable() {

@Override
public void run() {
for(int i=0; i<Integer.MAX_VALUE; i++){

synchronized (lock) {
System. out.println(i);
}

}
}
};

Thread t1 = new Thread(run);
t1.setName( “t1”);
4. WAITING, 这个需要用到生产者消费者模型, 当生产者生产过慢的时候, 消费者就会等待生产者的下一次notify

private static void WAITING() {

final Object lock = new Object();
Thread t1 = new Thread(){
@Override
public void run() {

int i = 0;

while(true ){
synchronized (lock) {
try {
lock.wait();
} catch (InterruptedException e) {
}
System. out.println(i++);
}
}
}
};

Thread t2 = new Thread(){
@Override
public void run() {

while(true ){
synchronized (lock) {
for(int i = 0; i< 10000000; i++){
System. out.println(i);
}
lock.notifyAll();
}

}
}
};
Thread t2 = new Thread(run);
5. TIMED_WAITING, 这个仅需要在4的基础上, 在wait方法加上一个时间参数进行限制就OK了.

把4中的synchronized 块改成如下就可以了.

synchronized (lock) {
try {
lock.wait(60 * 1000L);
} catch (InterruptedException e) {
}
System. out .println(i++);
}
t2.setName( “t2”);

t1.start();
t2.start();

}

6. TERMINATED, 这个状态只要线程结束了run方法, 就会进入了…

private static void TERMINATED() {
Thread t1 = new Thread();
t1.start();
System. out.println(t1.getState());
try {
Thread. sleep(1000L);
} catch (InterruptedException e) {
}
System. out.println(t1.getState());
}

❻ JAVA中线程有哪五个基本状态它们之间如何让转化

java中,每复个线程都需经制历新生、就绪、运行、阻塞和死亡五种状态,线程从新生到死亡的状态变化称为生命周期。
用new运算符和Thread类或其子类建立一个线程对象后,该线程就处于新生状态。
新生--->就绪:通过调用start()方法
就绪--->运行:处于就绪状态的线程一旦得到CPU,就进入运行状态并自动调用自己的run()方法
运行--->阻塞:处于运行状态的线程,执行sleep()方法,或等待I/O设备资源,让出CPU并暂时中止自己运行,进入阻塞状态
阻塞--->就绪:睡眠时间已到,或等待的I/O设备空闲下来,线程便进入就绪状态,重新到就绪队列中等待CPU。当再次获得CPU时,便从原来中止位置开始继续运行。
运行--->死亡:(1)(正常情况下)线程任务完成
(2)(非正常状况)线程被强制性的中止,如通过执行stop()或destroy()方法来终止一个线程

❼ java线程有哪些状态

新生、就绪、运行、阻塞和死亡
java中,每个线程都需经历新生、就绪、运行、阻塞和死亡五种状态,线程从新生到死亡的状态变化称为生命周期。

❽ 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 线程有哪些状态,这些状态之间是如何转化的

线程在它的生命周期中会处于各种不同的状态:
新建、等待、就绪、运行、阻塞、死亡。
1 新建
用new语句创建的线程对象处于新建状态,此时它和其他java对象一样,仅被分配了内存。
2等待
当线程在new之后,并且在调用start方法前,线程处于等待状态。
3 就绪
当一个线程对象创建后,其他线程调用它的start()方法,该线程就进入就绪状态。处于这个状态的线程位于Java虚拟机的可运行池中,等待cpu的使用权。
4 运行状态
处于这个状态的线程占用CPU,执行程序代码。在并发运行环境中,如果计算机只有一个CPU,那么任何时刻只会有一个线程处于这个状态。
只有处于就绪状态的线程才有机会转到运行状态。
5 阻塞状态
阻塞状态是指线程因为某些原因放弃CPU,暂时停止运行。当线程处于阻塞状态时,Java虚拟机不会给线程分配CPU,直到线程重新进入就绪状态,它才会有机会获得运行状态。
6 死亡状态
当线程执行完run()方法中的代码,或者遇到了未捕获的异常,就会退出run()方法,此时就进入死亡状态,该线程结束生命周期。

由于java线程调度不是分时的,如果程序希望干预java虚拟机对线程的调度过程,从而明确地让一个线程给另外一个线程运行的机会,可以采用以下的方法
1 调整各个线程的优先级
2 让处于运行状态的线程调用Thread.sleep(long time)方法 放弃CPU 进入阻塞状态。
sleep方法可能抛出InterruptedException
线程休眠后只能在指定的时间后使线程处于就绪状态。(也就是等待cpu的调度)
3 让处于运行状态的线程调用Thread.yield()方法 只会同优先级让步或更高优先级让步,进入就绪状态。
4 让处于运行状态的线程调用另一个线程的join()方法
当前运行的线程可以调用另一个线程的join()方法,当前运行的线程将转到阻塞状态,直至另一个线程运行结束,它才会转到就绪状态 从而有机会恢复运行。

通过一下几种途径中的一种,线程可以从被阻塞状态到可运行状态。
1 线程被置于睡眠状态,且已经经过指定的毫秒数。
2 线程正在等待I/O操作的完成,且该操作已经完成。
3 线程正在等待另一个线程所持有的锁,且另一个线程已经释放该锁的所有权;(也有可能等待超时。当超时发生时,线程解除阻塞。)
4 线程正在等待某个触发条件,且另一个线程发出了信号表明条件已经发生了变化。(如果为线程的等待设置了一个超时,那么当超时发生时该线程将解除阻塞。)
5 线程已经被挂起,且有人调用了它的resume方法。不过,由于suspend方法已经过时,resume方法也就随之被弃用了,你不应该在自己的代码里调用它。(现在应该用sleep取而代之。)

❿ JAVA中,线程有哪五个基本状态他们之间如何让转化并简述线程周期。

java中,每个线程来都需经源历新生、就绪、运行、阻塞和死亡五种状态,线程从新生到死亡的状态变化称为生命周期。
用new运算符和Thread类或其子类建立一个线程对象后,该线程就处于新生状态。