Java线程核心操作之创建、启动与安全停止完全解析

 更新时间:2026年03月17日 09:19:15   作者:fengxin_rou  
Java作为一种广泛使用的编程语言,具有丰富的多线程支持,在Java中处理多线程的核心在于Thread类和Runnable接口,这篇文章主要介绍了Java线程核心操作之创建、启动与安全停止完全解析的相关资料,需要的朋友可以参考下

1.创建线程的方法有哪些?

继承Thread类

优点:继承Thread操作简单,用Thread.currentThread()可以得到当前运行的线程,用this也可以直接得到当前运行的线程

缺点:继承Thread类后不能继承其他类

实现Runnable接口

若是一个方法继承了其他父类,就可以实现java.lang.Runnable接口,实现接口需要重写它的Run方法,然后在Thread构造器里把Runnable对象作为参数传递进去,然后使用strat()方法创建线程

优点:可以在继承其他父类时,创建线程,并且可以实现多个线程资源共享,可以操作同一个Runnable对象,可以把cpu代码和数据分开,更好体现面向对象的编程思想

缺点:操作比较复杂,访问当前线程只能用Tread.currentTread()方法

实现Callable接口与FutureTask

java.util.concurrent.Callable接口类似于Runnable接口,但Callabe接口的call方法有返回值还可以抛出异常,想要创建线程需要先创建Callable对象,然后把对象作为参数传给Future Task任务管理器,然后创建线程,执行Callable任务、还可以得到任务结果

优点:可以继承其他父类,并且实现资源共享

缺点:操作复杂并且访问当前线程只能Thread.currentThead()

使用线程池

Java 5 引入的java.util.concurrent.ExecutorService接口和其他类,提供了线程池的支持,避免了查询和创建线程,可以通过Executor的静态方法创建不同类型的线程池、提高了线程管理效率

优点:可以避免重用预先创建的线程,避免了创建和查询线程的开销,提高了线程管理的效率。线程池可以合理的分配线程,避免资源浪费,如果遇到并发情况,线程池还可以快速提供线程来处理任务,减少等待时间。合理设置线程池的大小,可以提高cpu的利用率和系统吞吐量

补:系统吞吐量是指单位时间内系统成功处理的任务或业务量

缺点:代码操作比较复杂,在设置线程池参数的时候如果出错,可能会引起死锁,资源进程等问题,修复起来比较复杂

2.怎么启动线程?

通过Thread类的strat方法

3.怎么停止线程?

当线程执行 wait()/sleep()/join() 等可中断阻塞方法时,调用 interrupt() 会唤醒线程并抛出 InterruptedException,我们可以捕获该异常实现线程中断;而正常运行的线程,需通过轮询 interrupted()/isInterrupted() 判断中断状态,主动停止线程(无异常抛出)

stop()暴力停止:已经被废弃,线程如果强行调用stop()暴力停止可能会引起清理性的工作无法完成

补:

中断

是一个动作也就是调用Thread.interrupt()方法,改方法会发送一个中断请求,这是一个信号,不是强制立刻停止线程。

中断标记(中断状态)​

这是线程对象内部的一个布尔标志位(true/false):

  • true表示该线程收到了中断请求(但未必已处理)。

  • false表示没有收到中断请求或已被清除。

这个标志位是持久化存储在线程对象里的,直到被显式改变。

到此这篇关于Java线程核心操作之创建、启动与安全停止完全解析的文章就介绍到这了,更多相关Java线程创建、启动与安全停止内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot集成WebSocket项目实战的示例代码

    Spring Boot集成WebSocket项目实战的示例代码

    本文主要介绍了Spring Boot集成WebSocket项目实战的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-10-10
  • Java中关于字典树的算法实现

    Java中关于字典树的算法实现

    字典树,又称单词查找树,Trie树,是一种树形结构,哈希表的一个变种。用于统计,排序和保存大量的字符串,本文针对字典树给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值
    2021-09-09
  • Java transient关键字原理解析

    Java transient关键字原理解析

    这篇文章主要介绍了Java transient关键字原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 深入dom4j使用selectSingleNode方法报错分析

    深入dom4j使用selectSingleNode方法报错分析

    本篇文章是对dom4j使用selectSingleNode方法报错进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • java模仿windows计算器示例

    java模仿windows计算器示例

    这篇文章主要介绍了java模仿windows计算器示例,需要的朋友可以参考下
    2014-05-05
  • Java中数据库连接池HikariCP和Druid的技术对比与性能分析

    Java中数据库连接池HikariCP和Druid的技术对比与性能分析

    在现代Java应用开发中,数据库连接池是提升应用性能的关键组件之一,本文将深入对比两个主流的Java数据库连接池,希望对大家有一定的帮助
    2025-08-08
  • Java利用AQS实现自定义锁

    Java利用AQS实现自定义锁

    本文主要介绍了Java利用AQS实现自定义锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java 过滤器实现敏感词汇过滤功能

    Java 过滤器实现敏感词汇过滤功能

    通过使用 Java 过滤器,我们可以轻松地实现敏感词汇过滤的功能,以保护用户免受不良内容的侵害,让我们通过一个简单的示例来演示我们的敏感词汇过滤器是如何工作的,感兴趣的朋友一起看看吧
    2024-01-01
  • java警告:源发行版17 需要目标发行版17问题及解决

    java警告:源发行版17 需要目标发行版17问题及解决

    文章介绍了如何解决项目JDK版本不一致的问题,包括修改Project Structure、Modules、Dependencies和Settings中的JDK版本,以及在pom.xml中指定JDK源版本
    2024-11-11
  • springboot整合spring-retry的实现示例

    springboot整合spring-retry的实现示例

    本文将结合实例代码,介绍springboot整合spring-retry的实现示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06

最新评论