java stop和int,JAVA并发任务中止的isinterrupted,interupted()
将一个任务的不同步骤划分成子任务放到不同的线程里,这样实现的并行化并不是一个很好的办法。这些异质的子任务之间有协作关系,需要有效的机制
同步——而额外的同步会对性能有一定影响,更重要的是会影响scalability。一个更好的办法是将任务划分成多个独立的同质子任务,这样子任务可以在不需要
同步的情况下并行执行,性能提升的效果更明显,scalability也更强。
2.4. 任务的取消与终止
Java中没有安全的终止一个线程的方法,因此必须采用协作的方式来实现。
There is no safe way to preemptively stop a thread in Java, and therefore no safe way to preemptively stop a task. There are only cooperative mechanisms, by which the task and the code requesting cancellation follow an agreed-upon protocol.
再抓InterruptedException的时候要三思,要想好该做些什么,因为:
Thread interruption is a cooperative mechanism for a thread to signal another thread that it should, at its convenience and if it feels like it, stop what it is doing and do something else.
isInterrupted方法返回线程当前的interrupted状态;interrupted方法清除并返回interrupted状态。
如果打断发生时线程阻塞在sleep,wait之类的方法中,那它们会重置interrupted状态并抛出InterruptedException。这意味着在抓InterruptedException的时候调用isInterrupted会返回false。
如果打断发生在线程正常运行时,那打断只会将interrupted标志改成true,线程需要自己检查并清除这个标志。
如果在进入阻塞方法之前线程就已经被打断并且interrupted标志未被重置,那这些阻塞方法会立刻抛出InterruptedException。见如下例子:
这个程序的输出:
Because each thread has its own interruption policy, you should not interrupt a thread unless you know what interruption means to that thread.
java stop和int,JAVA并发任务中止的isinterrupted,interupted()相关推荐
- java boolean转int,java如何将int转换为boolean
When i convert: int B=1; boolean A=B; It gives error: Incompatible types, which is true But when I w ...
- Java String到int,Java int到String
Today we will look at Java String to int conversion and then java int to String conversion. Java pro ...
- 【2022最新Java面试宝典】—— Java并发编程面试题(123道含答案)
目录 一.基础知识 1. 为什么要使用并发编程 2. 多线程应用场景 3. 并发编程有什么缺点 4. 并发编程三个必要因素是什么? 5. Java 程序中怎么保证多线程的运行安全? 6. 并行和并发有 ...
- Java多线程专题一:并发所面临的问题
并发的概念: 在Java中是支持多线程的,多线程在有的时候可以大提高程序的速度,比如你的程序中有两个完全不同的功能操作,你可以让两个不同的线程去各自执行这两个操作,互不影响,不需要执行完一个操作才能执 ...
- java的知识点32——多线程 并发同步的 性能分析、快乐影院 订票操作
多线程 并发 同步 性能分析 /*** 线程安全: 在并发时保证数据的正确性.效率尽可能高* synchronized* 1.同步方法* 2.同步块* @author Administrator ...
- java condition_死磕Java并发:J.U.C之Condition
在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait().notify()系列方法可以实现等待/通知模式.在Java SE5后,Java提供了Lock接口,相对于 ...
- Java核心(三)并发中的线程同步与锁
2019独角兽企业重金招聘Python工程师标准>>> 乐观锁.悲观锁.公平锁.自旋锁.偏向锁.轻量级锁.重量级锁.锁膨胀...难理解?不存的!来,话不多说,带你飙车. 上一篇介绍了 ...
- Java线程新特征——Java并发库
一.线程池 Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利.为了编写高效稳定 ...
- java await signal_【Java并发008】原理层面:ReentrantLock中 await()、signal()/signalAll()全解析...
一.前言 上篇的文章中我们介绍了AQS源码中lock方法和unlock方法,这两个方法主要是用来解决并发中互斥的问题,这篇文章我们主要介绍AQS中用来解决线程同步问题的await方法.signal方法 ...
最新文章
- 关于mysql数据库中存放中文字段乱码问题解决方案
- PHPMailer 发送邮件
- shell脚本的执行方式
- eclipse中的WEB项目打包部署到tomcat .
- unslider调用配置选项
- 新计算机无法 盘启动不了,U盘无法被电脑识别导致制作U盘启动盘失败怎么办?...
- jquery mobile常用的data-role类型
- 【软件测试】你的简历出现这些问题?没人要也是有原因的
- img atl和a title
- 如何理解UCB-Upper Confidence Bound
- 向下兼容性格什么意思_向下兼容是什么意思
- 计算机科技公司的设备签收单,【验收单格式】_设备验收单格式与范本
- GMT和UTC时区概念
- 太极图计算机,如何使用CAD快速画一个太极图?
- PLSQL的快捷键以及使用技巧
- 小程序结合腾讯地图(QQMapWX)SDK做位置周边搜索展示
- 水果店节日活动营销方案,水果店如何做营销活动
- 由浅入深了解机械键盘:各种轴的区别
- 福特FORD EDI需求分析
- php写入文件内容方法,学习php写入文件内容的方法
热门文章
- HDU_2795 Billboard(线段树)
- 服务器应用程序不可用您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷...
- sql server 2008学习12 事务和锁
- idea使用MybatisCodeHelperPro逆向生成(亲测)
- 命令行执行php脚本中的$argv和$argc配置方法
- 火爆背后的挑战:直播平台的高并发架构设计丨视频PPT下载
- MySQL的Found_ROWS函数介绍
- 为PHP5.4开启Zend OPCode缓存
- MySQL的distinct:去重
- PHP的ob输出缓冲函数作用