本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- gaojingsong
- kaizi1992
- xpenxpen
- 龙儿筝
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
- kingwell.leng
最新文章列表
When and how to use a ThreadLocal
https://plumbr.eu/blog/java/when-and-how-to-use-a-threadlocal
As our readers might already have guessed, I deal with memory leaks on a daily basis. A particular type of the OutOfMemoryError messages h ...
闭锁CountDownLatch和栅栏CyclicBarrier之异同举例
CountDownLatch和CyclicBarrier的主要联系和区别如下:
1.闭锁CountDownLatch做减计数,而栅栏CyclicBarrier则是加计数。
2.CountDownLatch是一次性的,CyclicBarrier可以重用。
3.CountDownLatch强调一个线程等多个线程完成某件事情。CyclicBarrier是多个线程互等,等大家都完成。
4.鉴于上面的描述,C ...
java.util.concurrent: new library components
A map of java's concurrent tools.
References:
Thinking in Java, 4ed
jdk-7u45-apidocs
mindmap link:
http://pan.baidu.com/s/1hqrGmZM
image:
Java 7 并发编程指南
当你用计算机工作的时候,你在同时做多样事情。你可以边听音乐边写文档边读取邮件。可以这样做的原因是你的操作系统运行并发任务。并发编程是关于基础与进程的一个提供了多任务或者多程序同时运行还相互沟通来交换数据和相互同步的平台。Java是一个并发平台,在Java程序中提供了很多执行并发任务的类。每个版本,Java提升了促进程序员开发并发程序的功能。这本书包含了在Java版本7的并发API中最重要和最有用的 ...
Java并发完整教程
Table of Contents
1 什么是并发问题。
2 java中synchronized的用法
3 Java中的锁与排队上厕所。
4 何时释放锁?
5 Lock的使用
6 利用管道进行线程间通信
7 ...
Java SE: Effective Java Notes "Concurrency"
Use the Advanced Concurrent Tools instead of the legacy wait() and notify().
Java Advanced Concurrent Tools:
1> Executor Framework: ExecutorService, Callable, Executors ...
2> Concur ...
java.util.concurrent.locks.ReentrantLock 锁经验
1、ReentrantLock 锁是采用计数机制来进行加锁的,getHoldCount() 方法,可以认为当前线程Hold的次数,在实际当前线程中,lock/tryLock 和 unlock 不匹配,可能出现锁无法释放的情况。
2、如果 先tryLock ,然后再 lock 一次,则holdCount 为2,如果在finally中 unlock 一次,hol ...
java线程基础备忘
t.interrupt(): 中断线程t.
synchronized(o){o.wait()}: 自已放弃CPU等待o.notify().
synchronized(o){o.notify()}: 通知o.wait()的线程你可以运行了。如果这样的线程有多个,则选一个。notifyAll()将通知所有的。
注意以上都在synchronized内,因为wait, notify都必须自己的线程是the ...
Bug:LinkedTransferQueue的数据暂失和CPU爆满以及修复
前几天读LinkedTransferQueue(以下简称ltq)的源码,想加深下对松弛型双重队列的理解,无意中发现了这个问题:),经过仔细检查后确认了这是个bug,存在于JDK1.7.0_40和刚发布的JDK8中,去google和oracle官方似乎也没有搜索到这个问题。
重现bug:先来重现下这个bug,由于对并发线程的执行顺序预先不能做任何假设,所以很可能根本就不存在所谓的重现错误的“测试 ...
Java - 线程安全的 HashMap 实现方法及原理
Java HashMap 是非线程安全的。在多线程条件下,容易导致死循环,具体表现为CPU使用率100%。因此多线程环境下保证 HashMap 的线程安全性,主要有如下几种方法:
使用 java.util.Hashtable 类,此类是线程安全的。
使用 java.util.concurrent.ConcurrentHashMap,此类是线程安全的。
使用 java.ut ...
ActiveMQ 源码学习 1:从源码中找寻设计模式的踪影
今天主要分析两个类的实现。
首先看一下 org.apache.activemq.broker.BrokerFactory 类。从类的命名上看似乎使用了 GoF 设计模式中的抽象工厂模式。我们通过源码来分析一下是否真的应用了这种模式。
public final class BrokerFactory {
// ...
public static Brok ...
ThreadPoolExecutor异常处理
java.util.concurrent包中的ThreadPoolExecutor,提供了java语言的线程池,你可以提交一个返回结果的任务(submit(Callable),返回Future),或者执行一个不返回结果的任务(execute(Runnable)),但提交的任务可能会抛异常,这就需要处理异常:
1. 对于submit的任务,框架会将异常保持在future里,并包装在Executi ...
java并发实践1
1.没有属性的对象是“线程安全”的。Stateless objects are always thread-safe.
2.原子性.Atomicity
@NotThreadSafe
public class UnsafeCountingFactorizer implements Servlet {
private long count = 0;
public long ge ...
ConcurrentMap.putIfAbsent(key,value) 用法讨论
先看一段代码:
public class Locale {
private final static Map<String, Locale> map = new HashMap<String,Locale>();
public static Locale getInstance(String language, String country,
Strin ...
网页爬虫 mysh-crawler
去年写了个网页爬虫, 放在 https://code.google.com/p/mysh-crawler/, google code 常被政府墙掉, 搞不懂代码有啥好墙的, 这里留个备份.
爬虫特点:
1. 插件驱 ...
Insufficiently Synchronized Java Code
I'm reading "Java Concurrency in Practice". Section 3.1.1 talks about it may cause surprising results when you do not provide enough synchronization to your shared variables.
Take a look at ...