将一个任务的不同步骤划分成子任务放到不同的线程里,这样实现的并行化并不是一个很好的办法。这些异质的子任务之间有协作关系,需要有效的机制

同步——而额外的同步会对性能有一定影响,更重要的是会影响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()相关推荐

  1. 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 ...

  2. 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 ...

  3. 【2022最新Java面试宝典】—— Java并发编程面试题(123道含答案)

    目录 一.基础知识 1. 为什么要使用并发编程 2. 多线程应用场景 3. 并发编程有什么缺点 4. 并发编程三个必要因素是什么? 5. Java 程序中怎么保证多线程的运行安全? 6. 并行和并发有 ...

  4. Java多线程专题一:并发所面临的问题

    并发的概念: 在Java中是支持多线程的,多线程在有的时候可以大提高程序的速度,比如你的程序中有两个完全不同的功能操作,你可以让两个不同的线程去各自执行这两个操作,互不影响,不需要执行完一个操作才能执 ...

  5. java的知识点32——多线程 并发同步的 性能分析、快乐影院  订票操作

    多线程  并发  同步  性能分析 /*** 线程安全: 在并发时保证数据的正确性.效率尽可能高* synchronized* 1.同步方法* 2.同步块* @author Administrator ...

  6. java condition_死磕Java并发:J.U.C之Condition

    在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait().notify()系列方法可以实现等待/通知模式.在Java SE5后,Java提供了Lock接口,相对于 ...

  7. Java核心(三)并发中的线程同步与锁

    2019独角兽企业重金招聘Python工程师标准>>> 乐观锁.悲观锁.公平锁.自旋锁.偏向锁.轻量级锁.重量级锁.锁膨胀...难理解?不存的!来,话不多说,带你飙车. 上一篇介绍了 ...

  8. Java线程新特征——Java并发库

    一.线程池   Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利.为了编写高效稳定 ...

  9. java await signal_【Java并发008】原理层面:ReentrantLock中 await()、signal()/signalAll()全解析...

    一.前言 上篇的文章中我们介绍了AQS源码中lock方法和unlock方法,这两个方法主要是用来解决并发中互斥的问题,这篇文章我们主要介绍AQS中用来解决线程同步问题的await方法.signal方法 ...

最新文章

  1. 关于mysql数据库中存放中文字段乱码问题解决方案
  2. PHPMailer 发送邮件
  3. shell脚本的执行方式
  4. eclipse中的WEB项目打包部署到tomcat .
  5. unslider调用配置选项
  6. 新计算机无法 盘启动不了,U盘无法被电脑识别导致制作U盘启动盘失败怎么办?...
  7. jquery mobile常用的data-role类型
  8. 【软件测试】你的简历出现这些问题?没人要也是有原因的
  9. img atl和a title
  10. 如何理解UCB-Upper Confidence Bound
  11. 向下兼容性格什么意思_向下兼容是什么意思
  12. 计算机科技公司的设备签收单,【验收单格式】_设备验收单格式与范本
  13. GMT和UTC时区概念
  14. 太极图计算机,如何使用CAD快速画一个太极图?
  15. PLSQL的快捷键以及使用技巧
  16. 小程序结合腾讯地图(QQMapWX)SDK做位置周边搜索展示
  17. 水果店节日活动营销方案,水果店如何做营销活动
  18. 由浅入深了解机械键盘:各种轴的区别
  19. 福特FORD EDI需求分析
  20. php写入文件内容方法,学习php写入文件内容的方法

热门文章

  1. HDU_2795 Billboard(线段树)
  2. 服务器应用程序不可用您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷...
  3. sql server 2008学习12 事务和锁
  4. idea使用MybatisCodeHelperPro逆向生成(亲测)
  5. 命令行执行php脚本中的$argv和$argc配置方法
  6. 火爆背后的挑战:直播平台的高并发架构设计丨视频PPT下载
  7. MySQL的Found_ROWS函数介绍
  8. 为PHP5.4开启Zend OPCode缓存
  9. MySQL的distinct:去重
  10. PHP的ob输出缓冲函数作用