Java并发编程实践 目录并发编程—— ConcurrentHashMap并发编程—— 阻塞队列和生产者-消费者模式并发编程—— 闭锁CountDownLatch 与 栅栏CyclicBarrier并发编程—— Callable和Future概述第1部分Callable第2部分Future第3部分 ...
分类:
其他好文 时间:
2014-09-15 17:26:39
阅读次数:
287
package cn.itcast.download;import java.io.File;import java.io.InputStream;import java.io.RandomAccessFile;import java.net.HttpURLConnection;import jav...
分类:
编程语言 时间:
2014-09-15 12:51:18
阅读次数:
200
原文:Python高级特性(3): Classes和Metaclasses类和对象类和函数一样都是Python中的对象。当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变量。类是type类型的对象(是不是有点拗口?)。类对象是可调用的(callable,实现了 __call...
分类:
编程语言 时间:
2014-09-14 05:46:56
阅读次数:
428
package concurrency.callable;import java.util.concurrent.Callable;/** * * Callable 与 Future 是为了适应 jdk1.6多并发产生的 * Callable 与 Runnable接口 * 共同 : * ...
分类:
编程语言 时间:
2014-09-13 21:27:45
阅读次数:
291
http://www.ibm.com/developerworks/cn/java/j-thread/index.htmlhttp://www.ibm.com/developerworks/cn/java/multithreading/index.htmlhttp://www.ibm.com/dev...
分类:
编程语言 时间:
2014-09-13 14:36:25
阅读次数:
195
避免热点域
比如一个hashmap的size。优化的方法就是加一个计数器。但是对于ConcurrentHashMap来说。当并发的对其进行操作时,每次put和remove都需要改变这个计数器。所以在这个类里这个计数器就被叫做热点域,是可伸缩性的瓶颈。所以这里采取避免热点域的方法是对于应用锁分段的散列桶,ConcurrentHashMap中的size将对每个分段进行枚举并将每个分段的元素数量相加。...
分类:
编程语言 时间:
2014-09-13 09:24:34
阅读次数:
231
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后...
分类:
编程语言 时间:
2014-09-12 13:16:43
阅读次数:
183
1 import java.io.ByteArrayOutputStream; 2 import java.io.InputStream; 3 4 public class StreamTool { 5 /** 6 * 把一个inputstream里面的内容转化成一个byt...
分类:
编程语言 时间:
2014-09-11 19:06:42
阅读次数:
287
有这样一种场景,用多线程发送数据到某个服务器,需要知道各个线程是否都发送成功,等所有线程都发送完成才能继续下一轮计算和发送。如果用传统的多线程方式,就需要启动多个线程,然后在每个线程中分别发送数据,...
分类:
编程语言 时间:
2014-09-11 17:36:32
阅读次数:
194
阻塞
非竞争的同步可以完全在JVM中处理,竞争的同步则可能需要操作系统的介入,从而增加开销。当在锁上发生竞争时,竞争失败的线程肯定会阻塞。JVM在实现阻塞行为时,可以采用自旋等待,就是通过循环不断的尝试获取锁。直到成功。或者通过操作系统挂起被阻塞的线程。这两种方式的效率高低取决于上下文切换的开销以及在成功获取锁之前需要等待的时间。如果等待时间较短,采用自旋等待的方式,如果时间较长,则采用操作系统...
分类:
编程语言 时间:
2014-09-10 22:30:41
阅读次数:
230