并发编程
山鸡的春天
IT成长之路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 并发专题 : Timer的缺陷 用ScheduledExecutorService替代
继续并发,上篇博客对于ScheduledThreadPoolExecutor没有进行介绍,说过会和Timer一直单独写一篇Blog.1、Timer管理延时任务的缺陷a、以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗;然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,超过了两个任务的间转载 2017-06-21 17:45:48 · 277 阅读 · 0 评论 -
ConcurrentHashMap分析
ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。对于ConcurrentHashMap是如何提高其效率的,可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping)。实际上,ConcurrentHashMap对提高并发方面的优化,还有一些其它的技巧在里面(比如你是否知道在get操转载 2017-09-23 17:13:22 · 665 阅读 · 0 评论 -
高并发程序设计入门
说在前面本文绝大部分参考《Java高并发程序设计》,类似读书笔记和扩展。走入并行世界概念同步(synchronous)与异步(asynchronous)同步和异步通常来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续执行任务。 异步方法更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的工作。异步方法通常会在另外的线程中“真实”的执行。整个过程不会转载 2017-06-24 12:22:08 · 648 阅读 · 0 评论 -
Java 并发专题 :闭锁 CountDownLatch 之一家人一起吃个饭
最近一直整并发这块东西,顺便写点Java并发的例子,给大家做个分享,也强化下自己记忆。每天起早贪黑的上班,父母每天也要上班,话说今天定了个饭店,一家人一起吃个饭,通知大家下班去饭店集合。假设:3个人在不同的地方上班,必须等到3个人到场才能吃饭,用程序如何实现呢?作为一名资深屌丝程序猿,开始写代码实现:package com.zhy.concurrency.latch;public class Tes转载 2017-06-22 09:38:18 · 214 阅读 · 0 评论 -
Java 并发专题 : Semaphore 实现 互斥 与 连接池
继续并发方面的知识。今天介绍Semaphore,同样在Java.util.concurrent包下。本来准备通过例子,从自己实现到最后使用并发工具实现,但是貌似效果并不是很好,有点太啰嗦的感觉,所有准备直入主题。介绍:Semaphore中管理着一组虚拟的许可,许可的初始数量可通过构造函数来指定【new Semaphore(1);】,执行操作时可以首先获得许可【semaphore.acquire();转载 2017-06-22 09:18:44 · 221 阅读 · 0 评论 -
Java 并发专题 :FutureTask 实现预加载数据 在线看电子书、浏览器浏览网页等
继续并发专题~FutureTask 有点类似Runnable,都可以通过Thread来启动,不过FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞。由于:FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞这两个特性,我们可以用来预先加载一些可能用到资源,然后要用的时候,调用get方法获取(如果资源加载完,直接返回;否则继续等转载 2017-06-22 09:03:07 · 603 阅读 · 0 评论 -
Java 并发专题 : CyclicBarrier 打造一个安全的门禁系统
继续并发专题~这次介绍CyclicBarrier:看一眼API的注释:/** * A synchronization aid that allows a set of threads to all wait for * each other to reach a common barrier point. CyclicBarriers are * useful in programs inv转载 2017-06-21 22:38:00 · 244 阅读 · 0 评论 -
Java / Android 基于Http的多线程下载的实现
有个朋友需要个多线程现在的例子,就帮忙实现了,在此分享下~先说下原理,原理明白了,其实很简单:a、对于网络上的一个资源,首先发送一个请求,从返回的Content-Length中回去需要下载文件的大小,然后根据文件大小创建一个文件。this.fileSize = conn.getContentLength();// 根据响应获取文件大小 File dir = new File(dirStr); thi转载 2017-06-21 18:16:46 · 231 阅读 · 0 评论 -
Java并发专题 带返回结果的批量任务执行 CompletionService ExecutorService.invokeAll
一般情况下,我们使用Runnable作为基本的任务表示形式,但是Runnable是一种有很大局限的抽象,run方法中只能记录日志,打印,或者把数据汇总入某个容器(一方面内存消耗大,另一方面需要控制同步,效率很大的限制),总之不能返回执行的结果;比如同时1000个任务去网络上抓取数据,然后将抓取到的数据进行处理(处理方式不定),我觉得最好的方式就是提供回调接口,把处理的方式最为回调传进去;但是现在我们转载 2017-06-21 17:59:37 · 259 阅读 · 0 评论 -
素数筛选的写法
分单线程和多线程版本,直接贴代码吧 单线程: import java.util.BitSet; /** * 单线程版 * 素数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 57 61 67 71 73 79 83 89 97 */ public class Sieve { public static final int MAX ...原创 2018-03-15 01:36:38 · 360 阅读 · 1 评论
分享