- 浏览: 1104130 次
- 性别:
- 来自: 上海
最新评论
-
zhouchaofei2010:
Saro 写道在log4j配置里把mapper所在包设为deb ...
mybatis出现sql异常时的日志优化-打印sql参数 -
Saro:
在log4j配置里把mapper所在包设为debug就行了,参 ...
mybatis出现sql异常时的日志优化-打印sql参数 -
pyl574069214:
...
poi Excel 水平居中 垂直居中 -
zhouchaofei2010:
杀手请杀人 写道能看到scala太难得了 谢谢
scala 下划线解析报错: missing parameter type for expanded function -
杀手请杀人:
能看到scala太难得了
scala 下划线解析报错: missing parameter type for expanded function
文章列表
java并发编程实战-第13章-显示锁
Lock interface:
方法摘要
void lock()
获取锁。
void lockInterruptibly()
如果当前线程未被中断,则获取锁。
Condition ()
返回绑定到此 Lock 实例的新 Condition 实例。
boolean tryLock()
仅在调用时锁为空闲状态才获取该锁。
boolean tryLock(long time, TimeUnit newConditionu ...
java并发编程实战-第12章-并发程序的测试
安全性测试:不发生任何错误的行为
java并发编程实战-第11章-性能与可伸缩性
首先要保证程序的正确运行,仅当程序的性能需求和测试结果要求程序执行更快的时候,才应该设法提高程
序的运行速度
11.1 对性能的思考
要想通过并发提高性能,需要做好2件事:
更有效的利用现有的处理资源,以及在出现新的处理资源时使程序尽可能的利用新资源
如果是计算密集型的,则可以添加cpu来处理
11.1.1 性能与可伸缩性
本章重点介绍可伸缩性而不是单线程的性能
11.1.2 评估各种性能权衡因素
避免不成熟的优化。首先使城迅速正确,然后再提高运行速度
已测试为基准,不要猜测
11.2 Amdah ...
第三部分 活跃性、性能和测试
java并发编程实战-第10章-避免活跃性危险
10.1.1 锁顺序死锁
GUI为什么设计成单线程的原因
10.1.2 动态的锁顺序死锁
转账时,对于参数账户a和b,如果设计成a转移b时先设定先锁定a再锁定b,则b转给a时就会先锁定b
再锁定a,造成锁顺序死锁
此时可以通过取a和b的hash值,来确定锁定顺序的规则,如果有主键的话,则直接通过主键来确定
锁定规则,而不用判断hash值是否相同的情况
10.1.3 在协作对象发生死锁
...
java并发编程实战-第9章-图形用户界面应用程序
虽然GUI框架本身是单线程子系统,但应用程序可能不是单线程的,因此在编写GUI代码的时候仍然需要谨慎
地考虑线程问题
9.1 为什么GUI是单线程的?
竞态条件和死锁 ...
java并发编程实战-第8章-线程池的使用
重点:配置调优的高级选项,并分析在任务执行框架时需要注意的各种危险
8.1 在任务与执行策略之间的隐性耦合
8.1.1 线程饥饿死锁
条件:任务依赖其他任务,只要线程池中的正在执行的任务的线程需要等待一工作队列中的任务而阻塞。
调整策略:调整线程池的大小
例子:ThreadDeadlock中主任务等待子任务的完成(注意:例子是单线程执行,如果是多线程则不会)
Task that Deadlocks in a Single-threaded Executor Don't Do this.
public c ...
java并发编程实战-第7章-取消与关闭
java中没有一种安全的抢占式方式的,只有协作式
取消标志如果和阻塞方法一起使用,则会失效,如
public void run() {
try {
BigInteger p = BigInteger.ONE;
while (!cancelled)
queue.put(p = p.nextProbablePrime());
} catch (InterruptedException consumed) { ...
第二部分 结构化并发应用程序
java并发编程实战-第6章-任务执行
6.1 在线程中执行任务
当围绕”任务执行“来设计应用程序结构时,第一步就是找出清晰的任务边界。理想情况下,任务之间是
相互独立的
吞吐率和相应时间的选择:当用户希望尽快的相应,而负载过多时,应用性能应该逐步减低
6.2 Excutor框架
java 类库中,任务执行的主要抽象不是Thread,而是Executor
这是基于生产者-消费者模式的一种设计
6.2.1 示例 基于Excutor的web服务器
6.2.2 执行策略
各种 ...
java并发编程实战-第5章-基础构建模块
第4章中,介绍的构造线程安全类中的技术中,委托是创建线程安全类的一个最有效策略。
java平台类中包含了丰富的并发基础构建模块,例如线程安全类容器和同步类工具。本章将介绍其中的一些最有用的模块以及使用这些模块构建并发应用程序的一些常用模式
5.1 同步容器类
早期的有vector、Hashtable 、以及Collections.synchronizedXxx构建的容器
5.1.1 同步容器类的问题
同步类容器是线程安全的,但在某些情况下需要客户端加锁来保护复合操作。比如常见的迭代
...
java并发编程实战-第4章-对象的组合
(重点:组合模式)
4.3.5 重点:理解发布状态可变的车辆追踪器
p58 理解脚注: 如果将拷贝构造函数实现为this(p.x,p.y),那么会产生竞态 条件,而私有构造函数则可以避免这种竞态条件.这是私有构造函数捕获模式的一个实例
测试类
public class SafePointMain {
public static void main(String[] args) throws Exception {
final SafePoint originalSafePoint = new Sa ...
java并发编程实战-第3章-对象的共享
如何共享和发布对象,使其能符合第2章所讨论的多个线程下的安全性访问。2-3章是第4章构建线程安全类
和通过java.util.concurrent类库来构建并发应用程序的重要基础
同步除了实现原子 ...
java并发编程实战-第2章-线程安全性
2. 线程安全性
2.1 什么是线程安全性
线程安全类:当一个类被多个线程访问时,不管运行环境中如何调度,这些线程如何交替执行,并且在调用的代码部分不需要额为的同步或者协同。 ...
java并发编程实战-第1章-简介
简介就是简介。。。内容在后面
ThreadLocal在1.6版本中不是用一个全局的Map来存各个线程的变量副本,而是在Thread类中有一个ThreadLocalMap的变量,然后用Thread.currentThread().threadLocals.get(this)来引用的各线程变量副本,这样避免了去同步全局的Map
ThreadLocal使用的简单例子:
package com.test;
public class TestNum {
// ①通过匿名内部类覆盖ThreadLocal的initialValue()方法,指定初始值
private static ThreadLoc ...
Thread类中的threadLocals
- 博客分类:
- 多线程
ThreadLocal在1.6版本中不是用一个全局的Map来存各个线程的变量副本,而是在Thread类中有一个ThreadLocalMap的变量,然后用Thread.currentThread().threadLocals.get(this)来引用的各线程变量副本,这样避免了去同步全局的Map
ThreadLocal使用的简单例子:
package com.test;
public class TestNum {
// ①通过匿名内部类覆盖ThreadLocal的initialValue()方法,指定初始值
private static ThreadLoc ...