
多线程
文章平均质量分 71
SAN_YUN
这个作者很懒,什么都没留下…
展开
-
java多线程学习
CyclicBarrier在java多线程中,很多时候需要相互等到别的线程做了某见事情,其他线程才能进入下一步,一种方式是通过wait(),和notifyall的方式,但还有比这种更好的方式吗? 这就要靠java.util.concurrent包中的CyclicBarrier类了。它是一个同步辅助类,它允许一组线程(任务)互相等待,直到到达某个公共屏障点 (common barrier...原创 2012-02-07 16:31:46 · 112 阅读 · 0 评论 -
ThreadPoolExecutor入门
一、corePoolSize和maximumPoolSize提交任务的基本流程:1. 当新任务在方法 execute(java.lang.Runnable) 中提交时,如果运行的线程少于 corePoolSize,则创建新线程来处理请求,即使其他辅助线程是空闲的。如果运行的线程多于 corePoolSize 而少于 maximumPoolSize,则仅当队列满时才创建新线程。2. 如果运行的线...原创 2013-08-21 16:09:26 · 154 阅读 · 0 评论 -
SynchronousQueue
SynchronousQueue一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。不能在同步队列上进行 peek,因为仅在试图要取得元素时,该元素才存在;除非另一个线程试图移除某个元素,否则也不能(使用任何方法)添加元素;也不能迭代队列,因为其中没有元素可用于迭代。队列的头 是尝试添加到队列中的首个已排队线程元素;如果没有...原创 2013-07-07 22:02:37 · 163 阅读 · 0 评论 -
深入JVM锁机制2-Lock
前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在 java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、 ReadWriteLock(...原创 2013-07-07 00:47:37 · 253 阅读 · 0 评论 -
深入JVM锁机制1-synchronized
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令...原创 2013-07-07 00:34:33 · 1820 阅读 · 1 评论 -
java与python多线程wait,notify操作比较
wait 和notify的应用场景在学习wait,notify之前首先需要解释java中wait()和notify()的应用场景。wait和notify提供了对多个线程之间的等待和通知操作。例如抓取站外多张图片通常会通过多个thread同时进行,但主线程需要等到这批数据返回的结果。多线程操作通常都有提交者(submiter)和执行者(executor),java通过concurrent...原创 2013-07-06 23:36:32 · 548 阅读 · 0 评论 -
并发的常见问题和对应的解决方案
1、最简单的,页面的《提交》按钮,在点击后(校验通过后)Disabled,这样用户就不会重复点击《提交》按钮;2、数据库表增加唯一性索引(比如memberId),这个只能解决一般(为什么一般,继续看)并发插入的问题;如果两条一样的数据插入,只有一条会成功,另外一次插入失败;3、使用乐观锁,在Table里增加一个...原创 2012-08-29 18:22:15 · 249 阅读 · 0 评论 -
exodus2线程总结
[b]现象描述[/b] exodus2在启动不久后就挂住,用kill -3后发觉线程大量停在了Hashmap.get/put 方法。 原因是随意将HashMap用于多线程环境中[b]代码:[/b]定义成员变量[code="java"]private static Map cachedMap = new HashMap(7000);private stat...原创 2012-08-26 18:25:57 · 167 阅读 · 0 评论 -
并发导致计数不准确问题总结
并发问题多多!!!!实际已经395个参与者了,页面还在显示390个参与者。 页面上的计数是直接在event表有一个event_member_count字段来计数,每次有人参与就自动+1,代码如下:def save(self, *args, **kwargs): id = self.id event = self.ev...原创 2012-08-26 15:17:49 · 365 阅读 · 0 评论 -
HashTable, hashmap ,ConcurrentHashMap
http://www.ibm.com/developerworks/cn/java/j-jtp07233/在Java类库中出现的第一个关联的集合类是 Hashtable ,它是JDK1.0的一部分。 Hashtable 提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的―― ...原创 2012-11-18 23:20:45 · 126 阅读 · 0 评论 -
Java中容易踩到的“坑”系列之线程池篇
原文:http://hellojava.info/?p=13 在有了java.util.concurrent包后,通常都会采用Executors或ThreadPoolExecutor来创建线程池,但这两个类都挺容易用错,如果不仔细阅读它的API或源码的话,很容易就踩进坑里。通过new ThreadPoolExecutor可创建相应配置的线程池,但这个接口挺容易被误用,也许会导致行为和...原创 2013-03-29 13:49:44 · 402 阅读 · 0 评论 -
JVM锁实现探究:synchronized初探
原文:http://www.majin163.com/2014/03/17/synchronized1/http://www.majin163.com/2014/03/17/synchronized2/JAVA是一门极易入门的语言,这一点尤其表现在JAVA中对象锁的使用和多线程编程上。所谓对象锁,就是可以直接在JAVA的任意Object加锁(synchronized),也可以在通过任...原创 2014-03-26 12:40:22 · 324 阅读 · 0 评论