[线程异步]
文章平均质量分 84
手艺人王学明
岁月本长,而忙者自促,天地本宽,而鄙者自隘
展开
-
励精图治---Concurrency---组合对象
判断一个类是否是线程安全的?要看三方面。1. 查看类中所有的状态变量2. 找出这些状态变量的约束条件,可变的,不可变的3. 查看,是否对这些状态变量有并发访问管理。这里要注意所加的锁是怎样的。private this 又或者其他。观点总结状态变量是越少越简单。需要判断的状态,组合状态也就少了。复杂度肯定下降。对现有的状态变量,怎么做?1. 熟悉其特定的属性,比如原创 2015-08-08 15:46:20 · 493 阅读 · 0 评论 -
励精图治---Concurrency---为什么要有线程
留了空格。带着目的性的写原创 2015-09-28 17:55:55 · 450 阅读 · 0 评论 -
励精图治---Concurrency---GUI设计
为什么只是点击一个button, 可以看到按键变化很快? 添加了按键事件listener,并在里头dosomething的时候有时会有无响应的感觉?因为特么GUI工具包都被实现为单线程.---------->因为单线程能保证时间有序进行.多线程不稳定的多,开发难度大.现在都是单线程了.EDT: 事件分发线程 Event Dispatch ThreadEDT负责GUI原创 2015-09-21 17:46:48 · 458 阅读 · 0 评论 -
励精图治---Concurrency---怎么测??
写着先原创 2015-10-09 18:25:14 · 344 阅读 · 0 评论 -
励精图治---Concurrency---ThreadPoolExecutor最详
心情不好,不适合写博客。今天开篇。周末完成它。唉我的妈呀。这个世界怎么了?原创 2015-09-11 14:50:48 · 649 阅读 · 0 评论 -
励精图治---Concurrency---吞吐量、活跃性及死锁
更新概念所谓吞吐量跟活性:就是单位时间内,系统处理信息的数量,速度表现的结果。所谓死锁:就是两个线程,我有你要的,你有我要的,互不相让,都等对方让出来,就死锁了。分析情景锁顺序死锁:所有的线程申请锁的顺序不一样,那么就存在一定概率发生死锁。换言之,如果所有线程都以 相同的顺序来获得锁,那么在程序中就不会出现锁顺序死锁问题。危害死锁,小应用当然没事。如果你原创 2015-09-28 17:46:14 · 497 阅读 · 0 评论 -
励精图治---Concurrency---线程池啊线程池
定义线程池就是管理一大堆线程行为的资源池,包括创建,销毁,执行。优势开销更小: 线程池比每个任务分配一个线程开销更小,它避免了创建销毁的开销。响应更快: 在一般情况下,线程池中的线程就已经存在了。避免了创建的过程,所以响应更快。资源利用更高: 线程池,能让资源更充分的利用。线程不是越多越好,适中数量才能让资源利用更高。不然,CPU轮询可能就够吃一壶了。更稳定: 线程池能避免原创 2015-09-11 11:44:12 · 459 阅读 · 0 评论 -
励精图治---Concurrency---共享对象
之前说线程安全就是对状态访问变量的管理。状态访问变量的管理,主要是实现原子性和内存可见性。什么是内存可见性?我们的赋值操作,一般包含3个步骤 读取---修改---写入。在没有同步的情况下,编译器,处理器以及在运行时的操作,都对执行顺序进行调整,这些调整往往会打乱应有的顺序,导致意想不到的问题。通常JVM对这个顺序会有调整。比如一些常用的服务器程序。在开发调试阶段,我们会增加-s原创 2015-08-05 22:52:53 · 793 阅读 · 1 评论 -
励精图治---Concurrency---取消线程
线程创建后有几种情况会取消1. 用户点击cancel取消2. 超时取消,比如网页加载中有部分信息没被加载出来3. 应用程序的逻辑设计,比如在多线程情况下,有一个线程找到了result,其他线程停止作业。4. error。exception5. 关闭程序,关闭服务常用中断方式while (!isCancelled) { doSomething(原创 2015-08-31 16:16:43 · 461 阅读 · 0 评论 -
励精图治---Concurrency---起步线程安全
想说线程安全是程序员必备技能之一。总是不能够好好的学习研究一下这个东西。从今天开始吧。有一个起点。定义线程安全即对状态访问变量的管理,状态访问变量一般指的是共享的和可变的状态变量。意义旨在程序利用多线程技术提高整体运行效率的同时提供数据正确性的保障常见手段synchronized:对象加锁,代码块排他式保护volatile:将变量移到主存,即时生效。原创 2015-08-04 17:14:24 · 407 阅读 · 0 评论 -
励精图治---Concurrency---利用线程安全类来构建
委托是创建线程安全模块最有效的策略。注意几个要点:1. 利用委托来确保线程安全----新建一个类,调用非线程安全类的接口,在新建类中完善同步2. 注意同步时加锁的对象。不可弄错了同步对象3. 利用clone,将对象复制出来后,修改这个副本,修改完成后,重定向。(这可能伴随着开销问题) 在clone过程中也要加锁。4. 要注意多线程操作时,不能存在持有锁原创 2015-08-14 11:21:25 · 511 阅读 · 0 评论 -
励精图治---Concurrency---小结
几个重点:1. 对可变状态,共享状态要特别关注2. 尽可能将域改成final,可以减少状态变量的数量,减少并发时的难度3. final,或者事实不可变对象都是线程安全的4. 利用临时变量,将状态封装在线程中,可以减少并发风险5. 每个状态变量都要有锁来保护。这个锁主要是内存可见性和原子性6. 受同一个状态变量影响到操作,要用同一个锁。7. 复合操作,要注意其原子性。这可原创 2015-08-14 11:26:07 · 370 阅读 · 0 评论 -
励精图治---Concurrency---如何创建多线程
多线程任务的创建 我们将程序的工作分解到多个任务中。尽量让各个人物之间保持独立。多线程任务的演化1. 单线程class SingleThreadWebServer {public static void main(String[] args) throws IOException {ServerSocket socket = new ServerSoc原创 2015-08-26 17:16:48 · 452 阅读 · 0 评论 -
AsyncTask源码解析,你需要摸清的细节
AsyncTask简介1. AsyncTask提供了一种恰当的简单的跟UI Thread交互的方式。2. 它不需要通过操控Threads或Handler就可以将后台操作以及其结果展示在UI Thread上。3. AsyncTask是围绕Thread和Handler被设计出的一个Helper类,它不构成一般的线程框架。4. AsyncTasks使用在短时间操作(最多几秒钟)上是非常理原创 2016-12-28 16:24:18 · 346 阅读 · 0 评论