君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理
  1057 随笔 :: 381 文章 :: 141 评论 :: 169万 阅读

随笔分类 -  java并发编程

1 2 3 下一页

摘要:摘要从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。场景1:如果发现该操作已经在执行中则不再执行(有状态执行)a、用在定时任务时,如果任务执行时间可能超过下次计划执行时间,确保该有状态任务只有一个正在执行,忽略重复触发。b、用在界面交互时点击执行较长时间请求操作时... 阅读全文
posted @ 2015-03-17 11:47 刺猬的温驯 阅读(1414) 评论(0) 推荐(0) 编辑

摘要:ReentrantLock是一个较为常用的锁对象。在上次分析的uil开源项目中也多次被用到,下面谈谈其概念和基本使用。概念一个可重入的互斥锁定 Lock,它具有与使用 synchronized 相同的一些基本行为和语义,但功能更强大。名词解释:互斥表示同一时刻,多个线程中,只能有一个线程能获得该锁。... 阅读全文
posted @ 2015-03-17 11:36 刺猬的温驯 阅读(1133) 评论(0) 推荐(0) 编辑

摘要:java锁的种类以及辨析(一):自旋锁锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性... 阅读全文
posted @ 2015-03-01 22:03 刺猬的温驯 阅读(5312) 评论(0) 推荐(0) 编辑

摘要:多线程设计模式:1.Single Threaded Execution Pattern[同一时刻只允许一个线程操作] 比喻:三个挑水的和尚,只能同一时间一个人过桥,不然都掉河里喂鱼了。 总结:在多个线程同时要访问的方法上加上synchronized关键字。2.Immutable Pattern[变量... 阅读全文
posted @ 2015-02-01 19:39 刺猬的温驯 阅读(536) 评论(0) 推荐(0) 编辑

摘要:volatile型变量的特殊规则volatile是Java虚拟机提供的最轻量级的同步机制,当一个变量被定义成volatile后,它将具备两种特性,第一是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程改变了这个变量的值后,新值对于其他线程来说是可以立即得知的;第二个语义是禁止指令重排序,... 阅读全文
posted @ 2015-02-01 19:33 刺猬的温驯 阅读(542) 评论(0) 推荐(0) 编辑

摘要:主存储器和工作存储器Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域,这些区域包括方法区,堆,虚拟机栈,本地方法栈,程序计数器。方法区存储类信息,常量,字节码等数据,堆内存存储所有生成的对象,方法区和堆内存为所有线程共享,而虚拟机栈是每个线程独有的,也就是说每个线程... 阅读全文
posted @ 2015-02-01 19:30 刺猬的温驯 阅读(656) 评论(0) 推荐(1) 编辑

摘要:接上一篇《多线程设计模式总结(一)》,这篇博客再介绍5个多线程设计模式7)Thread-Per-Message实现某个方法时创建新线程去完成任务,而不是在本方法里完成任务,这样可提高响应性,因为有些任务比较耗时。示例程序:12345678910public class Host { private ... 阅读全文
posted @ 2015-02-01 19:25 刺猬的温驯 阅读(579) 评论(0) 推荐(0) 编辑

摘要:并发程序的编程与设计是一个难点,也是程序员必须掌握的一个点。工作之后写的第一个软件里面也有并发编程,当时在设计并发这块感觉好复杂,最后的实现感觉也有点乱。当时就想好好学习一下并发编程的设计,但是一直没有时间。今年看了两本并发编程相关的书,《多线程设计模式》和《Java并发编程与实战》。本想着和设计模... 阅读全文
posted @ 2015-02-01 19:18 刺猬的温驯 阅读(715) 评论(0) 推荐(0) 编辑

摘要:在 JSR 133 中 JMM 会有什么改变?活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM)的公开建议。在本系列文章的 第 1 部分,专栏作者 Brian Goetz 主要介绍最初的 JMM 中的几个严重缺陷,这些缺陷导致了一些难度高得惊人的概念语义,这些概念原来被认为很简单。这个月,他介绍在新 JMM 中 volatile 和 final 的语义是如何变化的,这些改变使它们的语义符合大多数开发人员的直觉。其中一些改变已经在 JDK 1.4 中出现了,另一些改变则要等到 JDK 1.5。请您在本文的讨论论坛上与作者及 阅读全文
posted @ 2014-02-12 01:41 刺猬的温驯 阅读(376) 评论(0) 推荐(0) 编辑

摘要:活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM)的公开建议。原始 JMM 中有几个严重缺陷,这导致了一些难度高得惊人的概念语义,这些概念原来被认为很简单,如 volatile、final 以及 synchronized。在这一期的 Java 理论与实践 中,Brian Goetz 展示了如何加强 volatile 和 final 的语义,以修复 JMM。这些更改有些已经集成在 JDK 1.4 中;而另一些将会包含在 JDK 1.5 中。您可以在本文对应的论坛里与作者及其他读者分享您对本文的看法(您也可以点击文章底部或顶 阅读全文
posted @ 2014-02-12 01:39 刺猬的温驯 阅读(454) 评论(0) 推荐(0) 编辑

摘要:本文章节:1.JMM简介2.堆和栈3.本机内存4.防止内存泄漏1.JMM简介 i.内存模型概述 Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很多,该语言针对多种异构平台的平台独立性而使用的多线程技术支持也是具有开拓性的一面,有时候在开发Java同步和线程安全要求很严格的程序时,往往容易混淆的一个概念就是内存模型。究竟什么是内存模型?内存模型描述了程序中各个变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存中取出变量这样的底层细节,对象最终是存储在内存里面的,这点没有错,但是编译器、运行库、处理器或者系统.. 阅读全文
posted @ 2014-02-12 01:34 刺猬的温驯 阅读(518) 评论(0) 推荐(0) 编辑

摘要:本文参考了 http://space.itpub.net/13685345/viewspace-374940,原文作者:javagui在多线程编程当中,总会提到图形编程,比如java中的swing,并一再提出,在swing中,一切都是单线程的。所有的界面更新操作都必须在排 队似地进行。这样的目的在于,避免由于多线程的处理导致界面渲染以及组件排列异常,同时也避免了由于多线程带来的加锁访问以及等待锁的情况发生。 EventQueue的派发机制由单独的一个线程管理,这个线程称为事件派发线程(EDT)”。和其他很多桌面API一样,Swing将GUI请求放入一个事件队列中执行。 这个可以这样来理解,.. 阅读全文
posted @ 2013-11-03 15:53 刺猬的温驯 阅读(929) 评论(0) 推荐(0) 编辑

摘要:《FilthyRichClients》读完了前几个章节,现将我的体会结合工作以来从事Swing桌面开发的经验,对本书的一些重要概念进行一次 分析,对书中的一些遗漏与模糊的地方及时补充,同时使读者消除长期以来“Swing性能低、界面丑陋”诸如此类的旧观念。读书笔记仅谈谈我对Swing的 理解,难免会犯错误,还望广大读者指教。 书中第二章-Swing渲染基本原理 中对Swing的线程做了系统地介绍。相比其他同类Swing教程,已经讲得非常深入了。但是如果读者之前对线程的掌握程度有限,尤其是编写代码比较随意的coder们,动辄就大量编写类似下面这样的代码:jButton1.addActionList 阅读全文
posted @ 2013-11-03 15:50 刺猬的温驯 阅读(396) 评论(0) 推荐(0) 编辑

摘要:本系列文章导航深入浅出Java多线程(1)-方法 join深入浅出Java多线程(2)-Swing中的EDT(事件分发线程)深入浅出多线程(3)-Future异步模式以及在JDK1.5Concurrent包中的实现深入浅出多线程(4)对CachedThreadPool OutOfMemoryError难题的一些想法深入浅出多线程(5)以并行包线程池为例说说线程池的设计需求及使用深入浅出多线程(6)分析并行包线程池的设计与实现本文主要解决的问题是: 如何使其Swing程序只能运行一个实例? 抛开Swing, 我们的程序是通过java 命令行启动一个进程来执行的,该问题也就是说要保证这个进程的.. 阅读全文
posted @ 2013-11-03 15:25 刺猬的温驯 阅读(1432) 评论(0) 推荐(0) 编辑

摘要:本系列文章导航深入浅出Java多线程(1)-方法 join深入浅出Java多线程(2)-Swing中的EDT(事件分发线程)深入浅出多线程(3)-Future异步模式以及在JDK1.5Concurrent包中的实现深入浅出多线程(4)对CachedThreadPool OutOfMemoryError难题的一些想法深入浅出多线程(5)以并行包线程池为例说说线程池的设计需求及使用深入浅出多线程(6)分析并行包线程池的设计与实现 接深入浅出多线程系列4, 线程对象的创建和销毁是需要花费系统资源的,通过线程池,可以避免该问题并提高系统的响应时间。这种情形类似我们常提到的数据库连接池。 线程池... 阅读全文
posted @ 2013-11-03 15:24 刺猬的温驯 阅读(331) 评论(0) 推荐(0) 编辑

摘要:本系列文章导航深入浅出Java多线程(1)-方法 join深入浅出Java多线程(2)-Swing中的EDT(事件分发线程)深入浅出多线程(3)-Future异步模式以及在JDK1.5Concurrent包中的实现深入浅出多线程(4)对CachedThreadPool OutOfMemoryError难题的一些想法深入浅出多线程(5)以并行包线程池为例说说线程池的设计需求及使用深入浅出多线程(6)分析并行包线程池的设计与实现 接上篇,在上篇中介绍了线程池的设计需求以及使用,在这里我们分析Concurrent包中线程池的实现类 ThreadPoolExecutor的设计,是不是感觉没意义,人家. 阅读全文
posted @ 2013-11-03 15:01 刺猬的温驯 阅读(361) 评论(0) 推荐(0) 编辑

摘要:目录(?)[-]Future PatternTwo-Phase Termination PatternThread-Specific Storage PatternActive Object PatternFuture Pattern 在Thread-Per-Message Pattern中,我们研究过“收到每个请求建立一个线程”的做法,但这样的请求是不要求有返回值的。如果当需要返回值,但由于后台处理需要很久,返回值 不能马上获取,那么就可以使用 Future Pattern。Future Pattern同样会每个请求建立一个线程处理,同时会马上返回一个对象,但该对象并不是真正的返回值,真.. 阅读全文
posted @ 2013-09-15 01:16 刺猬的温驯 阅读(512) 评论(0) 推荐(1) 编辑

摘要:目录(?)[-]Read-Wirte Lock PatternThread-Per-Message PatternWorker Thread PatternRead-Wirte Lock Pattern Read-Write Lock Pattern 将读取和写入分开来处理。在读取数据之前,必... 阅读全文
posted @ 2013-09-15 01:13 刺猬的温驯 阅读(497) 评论(0) 推荐(0) 编辑

摘要:目录(?)[-]Guarded Suspension PatternBalking Pattern Producer-Consumer Pattern Guarded Suspension Pattern 该模式描述的是当一个线程在执行某个操作时,但由于其他资源还没有准备好,需要等待,那么就等待资源准备好才开始自己的操作。我们直接看代码例子:[java] view plaincopypublicclassRequest{privateStringname;publicRequest(Stringname){this.name=name;}publicStringgetName(){retur. 阅读全文
posted @ 2013-09-15 01:06 刺猬的温驯 阅读(575) 评论(0) 推荐(0) 编辑

摘要:目录(?)[-]Java多线程基础Thread类的run方法和start方法线程的启动线程的暂时停在线程的共享互斥线程的协调Single Threaded Execution PatternJava多线程基础Thread类的run方法和start方法 Java语言写成的程序一定是先从主线程开始操作,所以必须在程序的某个位置启动新的线程,才能算是真正的多线程程序。start()方法是 Thread类的方法,调用start()方法,就会启动新的线程。请注意,被调用来启动线程的是start()方法,而非run()方法。调用 start()方法之后,Java执行处理系统会在背后启动新的线程。再由这.. 阅读全文
posted @ 2013-09-15 01:00 刺猬的温驯 阅读(1659) 评论(0) 推荐(1) 编辑

1 2 3 下一页
点击右上角即可分享
微信分享提示