Two-phase Termination模式】的更多相关文章

停止线程是一个目标简单而实现却不那么简单的任务.首先,Java没有提供直接的API用于停止线程.此外,停止线程时还有一些额外的细节需要考虑,如待停止的线程处于阻塞(等待锁)或者等待状态(等待其它线程).尚有未处理完的任务等.本文介绍的Two-phase Termination模式提供了一种通用的用于优雅地停止线程的方法. Two-phase Termination模式简介 Java并没有提供直接的API用于停止线程.Two-phase Termination模式通过将停止线程这个动作分解为准备阶…
一,Two-Phase Termination模式 翻译过来就是:分两阶段终止 二,示例程序 public class CountupTread extends Thread { private long counter = 0; private volatile boolean shutdownRequested = false; //中止请求 public void shutdownRequest(){ shutdownRequested = true; interrupt();//中断所有…
停止线程是一个目标简单而实现却不那么简单的任务.首先,Java没有提供直接的API用于停止线程.此外,停止线程时还有一些额外的细节需要考虑,如待停止的线程处于阻塞(等待锁)或者等待状态(等待其它线程).尚有未处理完的任务等.本文介绍的Two-phase Termination模式提供了一种通用的用于优雅地停止线程的方法. Two-phase Termination模式简介 Java并没有提供直接的API用于停止线程.Two-phase Termination模式通过将停止线程这个动作分解为准备阶…
本文由本人首次发布在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-two-phase-termination.转载请注明作者: 黄文海 出处:http://viscent.iteye.com. 停止线程是一个目标简单而实现却不那么简单的任务.首先,Java没有提供直接的API用于停止线程.此外,停止线程时还有一些额外的细节需要考虑,如待停止的线程处于阻塞(等待锁)或者等待状态(等待其它…
本文参阅[http://ifeve.com/java-two-phase-termination/] Two-phase Termination模式简介 停止线程是一个目标简单而实现却不那么简单的任务.首先,Java没有提供直接的API用于停止线程.此外,停止线程还有一些额外的细节需要考虑,如停止的线程处于阻塞(如等待锁)或者等待状态(等待其他线程),尚有未处理完的任务等. Two-phase Termination模式通过将停止线程这个动作分解为[准备阶段]和[执行阶段]这两个阶段,提供了一种…
字面翻译是“两阶段终止”,这个模式用来进行结束操作后,再终止线程.比如我们想停止一个线程,但是让他停止之前必须要做一些清理工作,这时候就需要用到two-phase termination模式. public class TwoPhaseTerminationTest { /** * @param args */ public static void main(String[] args) { System.out.println("main begin"); try { Countup…
第1章"Single Threaded Execution模式--能通过这座桥的只有一个人" 该模式可以确保执行处理的线程只能是一个,这样就可以有效防止实例不一致. 第⒉章"Immutable模式--想破坏也破坏不了" Immutable模式,即实例一旦创建完毕,其内容便不可更改的模式.在该模式下,由于实例不会不一致,所以无需执行互斥处理,程序性能也能提高. 第3章"Guarded Suspension模式--等我准备好哦" Guarded Su…
Java:并发笔记-01 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 1. 进程与线程 本章内容 进程和线程的概念 并行和并发的概念 线程基本应用 1.1 进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存.在指令运行过程中还需要用到磁盘.网络等设备.进程就是用来加载指令.管理内存.管理 IO 的: 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程: 进程就可以视为程序…
https://m.aliyun.com/yunqi/users/1287368569594542/articles https://yq.aliyun.com/articles/59233 MySQL Master High Available 源码篇 1年前887 MasterFailover (Non-GTID) MHA::MasterFailover::main()->do_master_failover Phase 1: Configuration Check Phase init_c…
并发测试工具Jcstress使用教程 Jcstress 全称 Java Concurrency Stress,是一种并发压力测试工具,可以帮助研究JVM.java类库和硬件中并发的正确性. Wiki地址:https://wiki.openjdk.java.net/display/CodeTools/jcstress Wiki中有一个Jcstress的example,可以根据example很方便入门使用jcstress.当然,我们也可以手动创建自己的Jcstress测试工程. Maven例子 添加…
前言 如果要研究高并发,一般会借助高并发工具来进行测试.JCStress(Java Concurrency Stress)它是OpenJDK中的一个高并发测试工具,它可以帮助我们研究在高并发场景下JVM,类库以及硬件等状况. JCStress学起来很简单,而且官方也提供了许多高并发场景下的测试用例,只要引入一个jar包,即可运行研究. 如何使用JCStress 此演示用maven工程,首先需要引入jar包,核心包是必须要的,样例包非必须要,此是为了演示其中的例子. <dependencies>…
线程设计模式在按其有助于解决的多线程编程相关的问题可粗略分类如下. 不使用锁的情况下保证线程安全: Immutable Object(不可变对象)模式.Thread Specific Storage(线程特有存储)模式.Serial Thread Confinement(串行线程封闭)模式. 优雅地停止线程:Two-phase Termination(两阶段终止)模式. 线程协作:Guarded Suspension(保护性暂挂)模式 .Producer-Consumer(生产者/消费者)模式.…
一 Two-Phase Termination Pattern Two-Phase Termination Pattern,指的就是当希望结束一个线程的时候,送出一个终止请求,但是不会马上停止,做一些刷新工作.进入“终止处理中”,在该状态下,不会进行该线程日常工作任务的操作,而是进行一些终止操作. 这个方式所考虑的因素如下: 1,必须要考虑到使得该线程能够安全的结束,Thread中的stop会有问题的,因为它会不管线程执行到哪里,都会马上停止,不能保证安全的结束. 2,一定能够进行正常的终止处理…
1.模版除了传参,还可以自动创建.而传指针只是传参而已. template <class TYPE, class FUNCTOR, class ACE_LOCK, typename TIME_POLICY = ACE_Default_Time_Policy> class ACE_Timer_List_T : public ACE_Timer_Queue_T<TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY> { public: /// Type of ite…
zookeeper单机(Standalones模式)和集群搭建: 前奏: (1).zookeeper也可以在windows下使用,和linux一样可以单机也可以集群,具体就是解压zookeeper-3.4.6.tar.gz,然后进入conf目录修改配置文件zoo_sample.cfg,复制一份并改名zoo.cfg(这是默认名称) 编辑zoo.cfg里面的dataDir=/tmp/zookeeper(把这个路径换成windows带盘符的路径,单机版就改这么一点,集群版参考下面的Linux环境下集群…
公司有个项目需要安装greenplum数据库,让我这个gp小白很是受伤,在网上各种搜,结果找到的都是TMD坑货帖子,但是经过4日苦战,总算是把greenplum的安装弄了个明白,单机及集群模式都部署成功,下面由我给大家分享一下整个部署过程,并小分析一下安装过程中遇到的各种坑. 首先,说一下我的环境,CentOS 7.2.1511,64位操作系统,全新安装,没有更新过 [root@mdw ~]# cat /etc/redhat-release CentOS Linux release 7.2.15…
  结构化过程  这两个模式的共同点在于:模式所涉及流程的执行路径是由运行时决定的,而非设计时确定.包括:Arbitrary cycles(强制循环模式) .Implicit termination(隐式终止模式). ²  11  任意循环(Arbitrary Cycles)  描述:  工作流中的一个点可以让一个或多个活动反复的执行. 案例: “修改提交”后进入“经理审批”,但未通过,又回到“修改提交”. K2实现: ²  12  隐式终止(Implicit Termination)  描述:…
背景 工作流产品众多,而它们之间又缺乏统一的标准,使得不同的产品之间很难实现协同工作.为了解决这一问题,工作流管理联盟(WFMC)于1993 年成立,并提出了工作流参考模型,制定了五个标准接口. 其中有一个接口是过程定义接口.几乎每个工作流产品都有自己的过程定义语言(也称为工作流语言),可以从四个方面(控制流.数据流.资源.操作)来研究流程,工作流模式(Work Flow Pattern)只是涉及到其中的控制流部分.控制流(control flow)描述了活动在不同结构中的执行顺序.控制流对我们…
背景: 在一些项目,当我们使用LR录制脚本的时候,在我们安装认证我们无法启动[网址= ] HTTPS [/url]的IE插件,页面显示空白,没有事件的记录,在Firefox也一样. 在记录日志,我们会发现 “Connection termination(by client)” 的错误 分析:原因是是loadrunner 并不支持该格式的证书.我们安装的证书格式是.er,但是loadRunner只支持 .pem的格式. 解决方案:1. 我安装了证书2.输出 证书 (base64), 如:c:/te…
4.最大保护模式Maximum Protection 最大保护模式是DG可以提供的最高保护级别,建立在日志同步传输和确认的基础上.同样,可以使用alter database方法进行设置. SQL> alter database set standby database to maximize protection; Database altered 主库上,可以查看到状态变化和日志情况. SQL> select name, open_mode, database_role, protectio…
以word count为例,本地化运行模式(不需要安装zookeeper.storm集群),maven工程, pom.xml文件如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0…
The Phaser class provides a method that is executed each time the phaser changes the phase. It's the onAdvance() method. It receives two parameters: the number of the current phase and the number of registered participants; it returns a Boolean value…
在新文章“MapReduce模式.算法和用例”中,Ilya Katsov提供了一个系统化的综述,阐述了能够应用MapReduce框架解决的问题. 文章开始描述了一个非常简单的.作为通用的并行计算框架的MapReduce应用,这个框架适用于很多要求大量节点进行的计算和数据密集型计算,包括物理和工程仿真,数值分析,性能测试等等.接下来是一组算法,通常用于日志分析.ETL和数据查询,包括计数及求和,数据整理(基于特定函数),过滤,解析,验证和排序. 第二大部分是关于MapReduce模式,Katsov…
ZooKeeper的安装.配置.启动和使用(一)——单机模式 ZooKeeper的安装非常简单,它的工作模式分为单机模式.集群模式和伪集群模式,本博客旨在总结ZooKeeper单机模式下如何安装.配置.启动和使用: 一.安装配置ZooKeeper(在Windows操作系统下) a.下载ZooKeeper压缩安装文件,这里下载稳定版——zookeeper-3.4.5.tar.gz b.解压压缩文件,这里将其解压到C盘根目录下,打开解压后的文件夹,得到下图: c.点击上图名为“conf”的文件夹,可…
在这个过程其中JSF的实现者使用processValidators方法处理全部在tree中的组件中注冊的验证器.验证的过程就是通过每一个组件已有的规则对其已经保存的值进行校验,同一时候也对输入的值进行校验,前提是组件的immediate属性没有设置为true.从代码来看在UIViewRoot中的这个processValidators方法和上个阶段中的processDecodes基本一致.不用说下一个阶段(Update ModelValues Phase)也会有相相似的方法(processUpda…
消息保证送达是指消息发送方保证在任何情况下都会至少一次确定的消息送达.AtleastOnceDelivery是一个独立的trait,主要作用是对不确定已送达的消息进行补发,这是一种自动的操作,无需用户干预.既然涉及到消息的补发,就不可避免地影响发送方和接收方之间消息传递的顺序.接收方重复收到相同的消息等问题,这些用户必须加以关注.从另一个方面,AtleastOnceDelivery模式保证了强韧性Actor系统的不丢失消息,这项要求可能是一些系统的核心要求. AtleastOnceDeliver…
关键字:提供者模式,设计模式,github,gerrit,源码学习,jenkins,国际化,maven高级,maven插件 本篇文章的源码展示部分由于长度问题不会全部粘贴展示,或许只是直接提及,需要了解的朋友请fork in github,文中会给出源码地址. 源码的研究策略 从这篇文章开始,陆续要展开一些源码分析的内容,既然确立了这个目标,就要寻找研究源码的策略,经过各方面的取经和自己的总结,接下来我将采取的策略为: 源码内容: 从最早的release版本开始,任何伟大而复杂的工程可能都源自于…
Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而redis-sentinel本身也是独立运行的进程,可以部署在其他与redis集群可通讯的机器中监控redis集群. v哨兵作用 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常. 提醒(Notification):当被监控的某个Redi…
zookeeper的安装分为三种模式:单机模式.集群模式和伪集群模式. 1.单机模式 首先,从Apache官网下载一个Zookeeper稳定版本,本次教程采用的是zookeeper-3.4.9版本. http://apache.fayea.com/zookeeper/zookeeper-3.4.9/ 然后解压zookeeper-3.4.9.tar.gz文件到安装目录下: tar -zxvf zookeepre-3.4.9.tar.gz zookeeper要求Java运行环境,并且需要jdk版本1…
主要包括以下三部分,本文为第三部分: 一. Scala环境准备 查看二. Hadoop集群(伪分布模式)安装 查看三. Spark集群(standalone模式)安装 Spark集群(standalone模式)安装 若使用spark对本地文件进行测试学习,可以不用安装上面的hadoop环境,若要结合hdfs使用spark,则可以参考上面的步骤搭建hadoop. 1. 下载安装包并解压(如:~/tools/spark-2.3.1-bin-hadoop2.7): 2. 启动服务 a.启动master…