首页 > 编程语言 >java并发编程(三)-线程的协作式

java并发编程(三)-线程的协作式

时间:2022-11-30 14:33:54浏览次数:45  
标签:状态 调用 run 中断 编程 线程 java 方法


怎么样才能让Java里的线程安全停止工作呢?

一般来说:程序执行完或者抛出异常。

怎么用代码的方式将线程停止呢?

java并发编程(三)-线程的协作式_优先级

可以看到 stop(),resume(),suspend()已不建议使用,stop()会导致线程不会正确释放资源,suspend()容易导致死锁。

java线程是协作式,而非抢占式

 

调用线程的interrupt() 方法中断一个线程,并不是强行关闭这个线程,只是跟这个线程打个招呼,将线程的中断标志位isInterrupted置为true,线程是否中断,由线程本身决定。

isInterrupted() 判定当前线程是否处于中断状态。

static方法interrupted() 判定当前线程是否处于中断状态,同时中断标志位改为false。

方法里如果抛出InterruptedException,线程的中断标志位会被复位成false,如果确实是需要中断线程,要求我们自己在catch语句块里再次调用interrupt()。

线程常用方法和线程的状态

线程只有5种状态。整个生命周期就是这几种状态的切换。

run()和start() :run方法就是普通对象的普通方法,只有调用了start()后,Java才会将线程对象和操作系统中实际的线程进行映射,再来执行run方法。

yield() :让出cpu的执行权,将线程从运行转到可运行状态,但是下个时间片,该线程依然有可能被再次选中运行。

线程的优先级

取值为1~10,缺省为5,但线程的优先级不可靠,不建议作为线程开发时候的手段

守护线程

和主线程共死,finally不能保证一定执行

 

 

 

标签:状态,调用,run,中断,编程,线程,java,方法
From: https://blog.51cto.com/u_14906615/5899436

相关文章

  • 【JAVA基础】SQL示例
    SQL示例insert操作<!--id属性:表示映射的接口中方法的名称,直接标签的内容部来编写SQL语句--><!--useGeneratedKeys="true"表示开启某个字段的值递增(大部分都是......
  • Java 集合框架1:Collection
    目录集合框架1.概述2.Collection基本方法容器遍历容器实现元素排序3.Collections包装器实现(WrapperImplementations)Empty对象不可变单例Set(ImmutableSingletonSet)不可......
  • java 环境变量配置详细教程(2023 年全网最详细)
    前言:在上一篇文章中,壹哥给大家重点讲解了Java实现跨平台的原理,不知道你现在有没有弄清楚呢?如果你还有疑问,可以在评论区留言~之前的三篇文章,主要是理论性的内容,其实你暂......
  • Promise手动实现和Async Await拓展(JavaScript)
    Promise手动实现咱们来看一段Promise的代码:letp1=newPromise((resolve,reject)=>{resolve('成功')reject('失败')![]()})console.log('p1',p1)le......
  • 生产环境连接池和线程池配置参考
    <beanid="dataSource1"class="org.apache.commons.dbcp.BasicDataSource"><propertyname="driverClassName"value="${db.jdbc.driverClassName}"/><propertynam......
  • java排序算法
     一.冒泡排序特点:实现简单,无额外空间消耗,速度较慢,适合数据较少的场景,复杂度为O(N^2)思路:每一轮比较都从头开始,然后两两比较,如果左值比右值大,则交换位置,每一......
  • 实验四 Web服务器1-socket编程
    实验要求:基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:time服务器的客户端服务器,提交程序运行截图echo服务器的客户端服务器,提交程序运行截图,服务器把......
  • Java核心技术解析
    ​​JUCJMM与线程安全​​​​JUC指令重排与内存屏障​​​​JUCJava内存模型FAQ​​​​JUC同步和Java内存模型​​​​JUCvolatile实现原理​​​​JUCAQS详解​​......
  • 教你用JavaScript完成轮播图
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个轮播图。图片每3秒自动轮换,也可以点击左右按键轮播图片,当图片......
  • 线程的生命周期
    线程的状态线程的状态:也就是线程从生到死的过程,以及中间经历的各种状态及状态转换。理解线程的状态有利于提升并发编程的理解能力。Java线程的状态Java总共定义了6种状态6......