一、在任务与执行策略之间的隐性解耦
有些类型的任务需要明确地指定执行策略,包括:
. 依赖性任务。依赖关系对执行策略造成约束,需要注意活跃性问题。要求线程池足够大,确保任务都能放入。
. 使用线程封闭机制的任务。需要串行执行。
. 对响应时间敏感的任务。
. 使用ThreadLocal的任务。
1. 线程饥饿死锁
线程池中如果所有正在执行任务的线程都由于等待其他仍处于工作...
分类:
编程语言 时间:
2014-06-05 06:15:57
阅读次数:
355
继续并发,上篇博客对于ScheduledThreadPoolExecutor没有进行介绍,说过会和Timer一直单独写一篇Blog.
1、Timer管理延时任务的缺陷
a、以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗;然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,超过了两...
分类:
编程语言 时间:
2014-06-05 00:34:50
阅读次数:
371
一、死锁
所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。
百科百科
当两个以上的运算单元,双方都在等待对方停止运行,以取得系统资源,但是没有一方提前退出时,这种状况,就称为死锁。维基百科
1. 顺序死锁
最少有两个锁,一个线程获取到A锁需要获取B锁才能进行操作,而另外一个线程获取到了B锁,需...
分类:
编程语言 时间:
2014-06-03 03:15:52
阅读次数:
245
一、为什么GUI是单线程化
传统的GUI应用程序通常都是单线程的。
1. 在代码的各个位置都需要调用poll方法来获得输入事件(这种方式将给代码带来极大的混乱)
2. 通过一个“主事件循环(Main Event Loop)”来间接地执行应用程序的所有代码。
如果在主事件循环中调用的代码需要很长时间才能执行完成,那么用户界面就会“冻结”,直到代码执行完成。这是因为只有当执行控制权返回到主事件...
分类:
编程语言 时间:
2014-06-03 01:28:22
阅读次数:
221
让我们开始来从入门了解一下 Java
的并发编程。本文主要介绍如何开始创建线程以及管理线程池,在 Java 语言中,一个最简单的线程如下代码所示:Runnable runnable = new
Runnable(){ public void run(){ System.out.prin...
分类:
编程语言 时间:
2014-06-02 01:39:42
阅读次数:
263
背景
通过做下面一个小的接口系统gate,了解一下mina和java并发包里的东西。A系统为javaweb项目,B为C语言项目,gate是本篇需要完成的系统。
需求
1.
A为集群系统,并发较高,会批量发送给gate消息,并且接受gate返回的消息;
2.
gate独立部署,将从A接受到的消息压入队列,与B建立连接后,将每条消息验证签名等工作后,发送给B,需要保...
分类:
其他好文 时间:
2014-06-01 13:04:36
阅读次数:
330
造成开销的操作包括:
1. 线程之间的协调(例如:锁、触发信号以及内存同步等)
2. 增加的上下文切换
3. 线程的创建和销毁
4. 线程的调度
一、对性能的思考
1 性能与可伸缩性
运行速度涉及以下两个指标:
某个指定的任务单元需要“多快”才能处理完成、计算资源一定的情况下,能完成“多少”工作。
可伸缩性:
当增加计算资源时(例如:CPU、内存、存储容器或...
分类:
编程语言 时间:
2014-06-01 09:56:52
阅读次数:
271
继续并发,貌似并发的文章很少有人看啊~哈~
今天准备详细介绍java并发包下的Executor,以及Java提供了很多灵活的且极其方便的线程池的创建。
嗯,那就慢慢说,大家肯定都学过Socket,JavaSe的时候写聊天程序,游戏的服务器,以及Android程序自己需要提供服务器的,都会拿Socket来自己写个:
最初我们的服务器可能写成这样:
1、单线程服务器
package com....
分类:
编程语言 时间:
2014-05-25 22:45:11
阅读次数:
318
一、同步容器类
1. 同步容器类的问题
线程容器类都是线程安全的,但是当在其上进行符合操作则需要而外加锁保护其安全性。
常见符合操作包含:
. 迭代
. 跳转(根据指定顺序找到当前元素的下一个元素)
. 条件运算
迭代问题可以查看之前的文章
《Java ConcurrentModificationException 异常分析与解决方案》
二、并...
分类:
编程语言 时间:
2014-05-25 11:09:47
阅读次数:
331
一、设计线程安全的类
在设计线程安全类的过程中,需要包含以下三个基本要素:
. 找出构成对象状态的所有变量。
. 找出约束状态变量的不变性条件。
. 建立对象状态的并发访问管理策略。
分析对象的状态,首先从对象的域开始。 变量按作用域划分:
. 全局变量
. 局部变量
. 方法行参
. 异常处理参数
1. 收集同步需求
如果不了解对象的不变性条件...
分类:
编程语言 时间:
2014-05-25 08:41:05
阅读次数:
290