- 博客(25)
- 收藏
- 关注
原创 如何设置线程数
如何设置线程数并不是一个只要一个公式就是可以推导出来的,这实际需要经过试验测量,虽然在 《java 并发编程实战》 中给了一个如下一个公式: N(线程数)=N(cpu总数)*U(cpu的利用率)*(1+W(等待时间)/C(计算时间)) 而实际还要考虑内存等方面 参考:http://www.infoq.com/articles/Java-Thread-...
2015-09-24 15:16:28 183
原创 storm - 可靠机制(转)
一 可靠性简介 Storm的可靠性是指Storm会告知用户每一个消息单元是否在一个指定的时间(timeout)内被完全处理。完全处理的意思是该MessageId绑定的源Tuple以及由该源Tuple衍生的所有Tuple都经过了Topology中每一个应该到达的Bolt的处理。 注: timetout 可以通过Config.TOPOLOGY...
2015-09-18 00:07:49 2152
原创 storm中acker任务的名字由来猜测?
How does Storm implement reliability in an efficient way?A Storm topology has a set of special "acker" tasks that track the DAG of tuples for every spout tuple. acker 英文中文翻译为 :涡流,海啸,水的波纹 ...
2015-09-17 16:53:19 101
原创 java并发编程实战-第16章-java内存模型(JMM)
java并发编程实战-第16章-java内存模型(JMM)16 java内存模型(JMM) 对理解高并发很有用 参考:《深入理解的java虚拟机》第5部分 高效并发jsr133中文版 : http://ifeve.com/jsr133-cn/ 理解以下概念: 主内存和工作内存:对比计算机系统的内存和cpu的高速缓存 内存之间的相互工作:loc...
2015-09-17 09:51:48 104
原创 java并发编程实战-第15章-原子变量与非阻塞同步机制
java并发编程实战-第15章-原子变量与非阻塞同步机制 在高度竞争的情况下,锁的性能将超过原子变量的性能,但在其更加真实的竞争情况下,原子变量的性能将超过锁的性能 在高度竞争条件下,还得靠锁啊! 但在实际情况中,用原子变量。因为书中图15-1的竞争 主要分析15.4.2 非阻塞的链表 原子域更新器,什么时候用:如果执行原子更新的同...
2015-09-17 09:51:06 110
原创 java并发编程实战-第14章-构建自定义的同步器
java并发编程实战-第14章-构建自定义的同步器14.构建自定义的同步器类库中包含很多状态依赖的类 FutureTask 、Semaphore 和 BlockingQueue等14.1 状态依赖的管理 在并发程序中,基于状态的条件可能会由于其他线程的操作而改变 通过轮询和sleep可以勉强解决状态依赖的问题,但高效的做法是使用条件等待机制 14.1....
2015-09-17 09:50:40 136
原创 java并发编程实战-第13章-显示锁
java并发编程实战-第13章-显示锁 Lock interface: 方法摘要 void lock() 获取锁。 void lockInterruptibly() 如果当前线程未被中断,则获取锁。 Condition () 返回绑定到此 Lock 实例的新 Condition 实例。 ...
2015-09-16 09:24:05 91
原创 java并发编程实战-第11章-性能与可伸缩性
java并发编程实战-第11章-性能与可伸缩性首先要保证程序的正确运行,仅当程序的性能需求和测试结果要求程序执行更快的时候,才应该设法提高程 序的运行速度11.1 对性能的思考要想通过并发提高性能,需要做好2件事:更有效的利用现有的处理资源,以及在出现新的处理资源时使程序尽可能的利用新资源如果是计算密集型的,则可以添加cpu来处理 11.1.1 性能与可伸缩...
2015-09-16 09:23:05 107
原创 java并发编程实战-第10章-避免活跃性危险
第三部分 活跃性、性能和测试 java并发编程实战-第10章-避免活跃性危险 10.1.1 锁顺序死锁 GUI为什么设计成单线程的原因10.1.2 动态的锁顺序死锁 转账时,对于参数账户a和b,如果设计成a转移b时先设定先锁定a再锁定b,则b转给a时就会先锁定b 再锁定a,造成锁顺序死锁 此时可以通...
2015-09-16 09:22:13 101
原创 java并发编程实战-第9章-图形用户界面应用程序
java并发编程实战-第9章-图形用户界面应用程序虽然GUI框架本身是单线程子系统,但应用程序可能不是单线程的,因此在编写GUI代码的时候仍然需要谨慎 地考虑线程问题 9.1 为什么GUI是单线程的? 竞态条件和死锁, 1、气泡上升和气泡下沉,导致不一致的锁顺序,引发死锁 2、mvc模式的广泛使用,mvc三者的调用顺序也会造成不一致的锁定顺序,引发...
2015-09-16 09:21:32 125
原创 java并发编程实战-第8章-线程池的使用
java并发编程实战-第8章-线程池的使用 重点:配置调优的高级选项,并分析在任务执行框架时需要注意的各种危险8.1 在任务与执行策略之间的隐性耦合 8.1.1 线程饥饿死锁条件:任务依赖其他任务,只要线程池中的正在执行的任务的线程需要等待一工作队列中的任务而阻塞。调整策略:调整线程池的大小 例子:ThreadDeadlock中主任务等待子任务的完成(注意:...
2015-09-15 09:54:44 115
原创 java并发编程实战-第7章-取消与关闭
java并发编程实战-第7章-取消与关闭 java中没有一种安全的抢占式方式的,只有协作式 取消标志如果和阻塞方法一起使用,则会失效,如 public void run() { try { BigInteger p = BigInteger.ONE; while (!cancelled) ...
2015-09-15 09:54:02 107
原创 java并发编程实战-第6章-任务执行
第二部分 结构化并发应用程序java并发编程实战-第6章-任务执行6.1 在线程中执行任务 当围绕”任务执行“来设计应用程序结构时,第一步就是找出清晰的任务边界。理想情况下,任务之间是 相互独立的 吞吐率和相应时间的选择:当用户希望尽快的相应,而负载过多时,应用性能应该逐步减低 6.2 Excutor框架 java 类库中,任务执行的...
2015-09-15 09:52:15 130
原创 java并发编程实战-第5章-基础构建模块
java并发编程实战-第5章-基础构建模块 第4章中,介绍的构造线程安全类中的技术中,委托是创建线程安全类的一个最有效策略。 java平台类中包含了丰富的并发基础构建模块,例如线程安全类容器和同步类工具。本章将介绍其中的一些最有用的模块以及使用这些模块构建并发应用程序的一些常用模式 5.1 同步容器类 早期的有vector、Hashtable 、以及Co...
2015-09-15 09:50:52 148
原创 java并发编程实战-第4章-对象的组合
java并发编程实战-第4章-对象的组合 (重点:组合模式) 4.3.5 重点:理解发布状态可变的车辆追踪器 p58 理解脚注: 如果将拷贝构造函数实现为this(p.x,p.y),那么会产生竞态 条件,而私有构造函数则可以避免这种竞态条件.这是私有构造函数捕获模式的一个实例 测试类public class SafePointMain {publ...
2015-09-15 09:49:54 93
java并发编程实战-第3章-对象的共享
java并发编程实战-第3章-对象的共享如何共享和发布对象,使其能符合第2章所讨论的多个线程下的安全性访问。2-3章是第4章构建线程安全类 和通过java.util.concurrent类库来构建并发应用程序的重要基础 同步除了实现原子性操作外,另一个重要方面内存可见性 3.1可见性 In order to ensure visibility of ...
2015-09-14 16:10:03 127
java并发编程实战-第2章-线程安全性
java并发编程实战-第2章-线程安全性2. 线程安全性2.1 什么是线程安全性 线程安全类:当一个类被多个线程访问时,不管运行环境中如何调度,这些线程如何交替执行,并且在调用的代码部分不需要额为的同步或者协同。这个类为线程安全类 Thread-safe classes encapsulate any needed synchronization so tha...
2015-09-14 16:08:55 106
Thread类中的threadLocals 和ThreadLocal原理
ThreadLocal在1.6版本中不是用一个全局的Map来存各个线程的变量副本,而是在Thread类中有一个ThreadLocalMap的变量,然后用Thread.currentThread().threadLocals.get(this)来引用的各线程变量副本,这样避免了去同步全局的Map ThreadLocal使用的简单例子: package com.test;...
2015-09-14 14:47:44 348
原创 Thread类中的threadLocals
ThreadLocal在1.6版本中不是用一个全局的Map来存各个线程的变量副本,而是在Thread类中有一个ThreadLocalMap的变量,然后用Thread.currentThread().threadLocals.get(this)来引用的各线程变量副本,这样避免了去同步全局的Map ThreadLocal使用的简单例子: package com.test;...
2015-09-14 11:08:57 479
原创 Java 轻量级锁原理详解(Lightweight Locking)
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意。原因是,monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的。互斥是一种会导致线程挂起,并在较短的时间内又需要重新调度回原线程的,较为消耗资源的操作。为了优化Java的Lock机制,从Java6开始引入了轻量级锁的概念。轻量级...
2015-09-11 16:32:19 81
原创 java内存模型(相关文章收集)
doug lea 版: http://gee.cs.oswego.edu/dl/jmm/cookbook.html doug lea 版翻译 :http://ifeve.com/jmm-cookbook/ 并发编程网系列: http://ifeve.com/java-memory-model-0/ ...
2015-09-09 10:01:09 69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人