多线程之Thread类常见方法及线程的状态

简介: 多线程之Thread类常见方法及线程的状态

Thread类常见方法

创建、启动线程、终止线程、线程等待、获取线程实例、线程休眠

1.关于如何创建线程,在专栏的上一篇文章已经谈到了有5中创建线程的方式。

2.启动线程(t.start):调用 start 方法, 才在操作系统的底层创建出一个线程。

 

3.终止线程

停止线程的方式目前常见的有两种方法:

1. 通过共享的标记来进行沟通(需要给标志位上加 volatile 关键字)

2. 调用 interrupt()方法来通知

image.png

thread 收到通知的方式有两种:


1. 如果线程因为调用 wait/join/sleep 等方法而阻塞挂起,则以 InterruptedException 异常的形式通知,清除中断标志。当出现 InterruptedException 的时候, 要不要结束线程取决于 catch 中代码的写法,可以选择忽略这个异常, 也可以结束线程。

2.当线程没有阻塞时,那么这个时候只是内部的一个中断标志被设置,thread 可以通过

Thread.interrupted() 判断当前线程的中断标志被设置,清除中断标志。

Thread.currentThread().isInterrupted() 判断指定线程的中断标志被设置,不清除中断标志。

4.线程等待(join)

image.png

5.获取当前线程实例

public static Thread currentThread();(返回当前线程对象的引用)
public class ThreadDemo { 
   public static void main(String[] args) { 
       Thread thread = Thread.currentThread(); 
       System.out.println(thread.getName()); 
  } 
} 


6.线程休眠

public static void sleep(long millis);(休眠当前线程 millis 毫秒)
public class ThreadDemo { 
   public static void main(String[] args) throws InterruptedException { 
       Thread.sleep(3 * 1000); 
      } 
}


线程的状态

1.NEW创建了Thread对象,但是还没调用start(内核里还没创建对应PCB)

2.TERMINATED表示内核中的pcb已经执行完毕了,但是Thread对象还在

3.RUNNABLE可运行的(正在运行或者就绪)

4.阻塞(WAITING/TIMED_WAITING/BLOCKED),表示线程pcb正在阻塞队列中



相关文章
|
7天前
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
28 7
|
1天前
|
Java
多线程线程同步
多线程的锁有几种方式
|
1天前
|
安全 C# 开发者
【C# 多线程编程陷阱揭秘】:小心!那些让你的程序瞬间崩溃的多线程数据同步异常问题,看完这篇你就能轻松应对!
【8月更文挑战第18天】多线程编程对现代软件开发至关重要,特别是在追求高性能和响应性方面。然而,它也带来了数据同步异常等挑战。本文通过一个简单的计数器示例展示了当多个线程无序地访问共享资源时可能出现的问题,并介绍了如何使用 `lock` 语句来确保线程安全。此外,还提到了其他同步工具如 `Monitor` 和 `Semaphore`,帮助开发者实现更高效的数据同步策略,以达到既保证数据一致性又维持良好性能的目标。
7 0
|
4天前
|
Java UED
基于SpringBoot自定义线程池实现多线程执行方法,以及多线程之间的协调和同步
这篇文章介绍了在SpringBoot项目中如何自定义线程池来实现多线程执行方法,并探讨了多线程之间的协调和同步问题,提供了相关的示例代码。
31 0
|
6天前
|
SQL 机器学习/深度学习 算法
【python】python指南(一):线程Thread
【python】python指南(一):线程Thread
20 0
|
9天前
|
调度 Python
|
11天前
|
安全 算法 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(下)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
50 6
|
11天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(中)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
53 5
|
11天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(上)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
46 3
|
26天前
|
算法 Java 编译器
多线程线程安全问题之系统层面的锁优化有哪些常见的策略
多线程线程安全问题之系统层面的锁优化有哪些常见的策略