Java 语言中线程有六种状态,分别是:
-
NEW 初始状态:当一个Thread类或其子类的对象被声明并创建时。新生的线程对象属于新建状态。
-
RUNNABLE 可运行状态/运行状态:处于新建状态的线程执行start()方法后,进入线程队列等待CPU时间片,该状态具备了运行的状态,只是没有分配到CPU资源。当就绪的线程分配到CPU资源便进入运行状态,run()方法定义了线程的操作。
-
BLOCKED 阻塞状态:线程在排队等待CPU资源,如轮到此线程则会自动进入运行状态。
-
WAITING 无时限等待:线程被挂起,需要另一个线程将其唤醒才能使其重新进入可运行状态。
-
TIMED_WAITING 有时限等待:线程被挂起,可经过一定时间后重新进入可运行状态或其他线程将其唤醒。
-
TERMINATED 终止状态:当线程完成了任务或者由于出现异常等原因需要结束时,该线程将进入终止状态。此时,线程占用的资源会被释放掉,线程的生命周期也就结束了。
线程的创建方式
1、继承 Thread类, 重写 run方法
2、实现 Runnable接口,实现 run方法
3、实现 Callable接口,实现 call方法
1.继承Thread类
继承Thread类之后,重写run方法,把你需要执行的代码写在run方法中,测试的话,实例化一个MyThread实例对象,实行start()方法,执行线程,输出创建一个线程。
2.实现 Runnable接口
public class ImplementsRunnable implements Runnable {
private final String THREAD_NAME;
public ImplementsRunnable(String THREAD_NAME) {
this.THREAD_NAME = THREAD_NAME;
}
@Override
public void run() {
//运行逻辑
}
}
public static void main(String[] args) {
ImplementsRunnable runnable1 = new ImplementsRunnable("线程A");
ImplementsRunnable runnable2 = new ImplementsRunnable("线程B");
// 实例化 Thread类对象
Thread thread1 = new Thread(runnable1);
Thread thread2 = new Thread(runnable2);
// 启动线程
thread1.start();
thread2.start();
}
}
3、实现 Callable接口
public class ImplementsCallable implements Callable<Integer> {
private final String THREAD_NAME;
public ImplementsCallable(String THREAD_NAME) {
this.THREAD_NAME = THREAD_NAME;
}
@Override
public Integer call() throws Exception {
// 代码逻辑
}
return j;
}
public static void main(String[] args) {
FutureTask<Integer> futureTask = new FutureTask<>(new ImplementsCallable("线程A"));
// 实例化 Thread类对象
Thread thread = new Thread(futureTask);
// 启动线程
thread.start();
try {
Integer integer = futureTask.get();
System.out.println(integer);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
本文详细阐述了Java中线程的六种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,并介绍了通过继承Thread类、实现Runnable接口和Callable接口创建线程的方法。
3万+

被折叠的 条评论
为什么被折叠?



