Java Concurrency
sunnydogzhou
linux,java,c,网络,分布式,NoSql
展开
-
Java的多线程编程模型 1
<br />发现对于Java的多线程编程模型需要深入了解,打算<br /><br /> Java多线程的类库封装在java.util.concurrent.*中,java1.4到1.5的变化就是引入了这个支持并发编程的类库。首先得感谢下大名鼎鼎人类库作者Doug Lea,牛人总是让人膜拜的。<br /><br /> 1 什么是线程安全<br /> A class is thread-safe if it behaves correctly when accessed from multiple thr原创 2011-05-16 23:14:00 · 1954 阅读 · 1 评论 -
Java的多线程编程模型2--怎样才线程安全
在Java多线程编程模型1里面讲到了为什么线程不安全,那怎样才能做到线程安全了? 先来看线程工作是跟内存是怎么打交道的。在并发的线程中,分为主内存和工作内存,主内存就是程序分配的内存,工作内存就是线程所占的内存。线程可能在工作内存中存储了某些主内存对象的副本。当线程操作某个主内存的对象时,先从主内存中将变量的值拷贝到工作内存中,然后在工作内存中改变这个值,最后将这个值刷到主内存中。原创 2011-06-10 00:00:00 · 1358 阅读 · 0 评论 -
Java的多线程编程模型3 -- 在1.5之前怎么并发
在java1.5之前,java在并发上面的建树不多,只提供了为数不多的方式来提供提高并发的效率。其中synchronized关键字是使用最多的,这个看似简单的锁方式,效率奇差,所以那会,java程序员对于c++程序员的在java并发上的诟病总是无力回击。 在1.5之前,java提供的并发容器Vector,我们来看下具体的实现java.util.Vector public cla原创 2011-06-10 00:32:00 · 1902 阅读 · 1 评论 -
Java的多线程编程模型5--Java中的CAS理论
CAS,compare and swap的缩写,中文翻译成比较并交换。我们都知道,在java语言之前,并发就已经广泛存在并在服务器领域得到了大量的应用。所以硬件厂商老早就在芯片中加入了大量直至并发操作的原语,从而在硬件层面提升效率。在intel的CPU中,使用cmpxchg指令。在Java发展初期,java语言是不能够利用硬件提供的这些便利来提升系统的性能的。而随着java不断的发展,Ja原创 2011-06-18 22:09:00 · 8726 阅读 · 4 评论 -
Java的多线程编程模型4--synchronized
在Java1.5之前,synchronized应该是最常用的java支持并发手段。那synchronized是怎么做到的了,从java1.0开始,java中的每个对象就一个内部锁。如果一个类的方法被synchronized关键字所修饰,那么这个对象的锁将保护整个方法。举例来说:public synchronized void method(){ method body}等原创 2011-06-18 20:54:00 · 2140 阅读 · 3 评论 -
发现java程序cpu利用率100%的解决方法
最近发现一个java程序的cpu利用率总是在100%,开始没注意,以为是有负载在正常跑,后来发现不是这么一个情况,应该是程序里的某个线程在死循环中,只是程序里面n多线程,怎么知道是哪个线程把cpu占满了? 1)先用top找出哪个线程占着cpu shell下面用 [engine@tempt145 /data/itnProduct/ds2]$ top -H -p 8969 结果 to原创 2012-03-22 17:58:13 · 17304 阅读 · 2 评论