
java concurrency
Cages
care about your craft
展开
-
Executor
简答的一个例子:服务端:package com.jerry.concurrency.executor;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.原创 2012-02-20 15:45:29 · 1199 阅读 · 0 评论 -
Executor
简答的一个例子:服务端:import java.util.concurrent.Executors;public class MyServer {private static final Executor exec = Executors.newFixedThreadPool(10);public static void main(String[] args) t...2012-02-20 15:45:00 · 137 阅读 · 0 评论 -
ExecutorService
Callable和Future:ExecutorService 接口经常submit 方法返回一个对象,Future代表了一个异步任务的结果,可以用来取消任务、查询任务状态,还有通过get方法获得异步任务返回的结果。当调用get方法的时候,当前线程被阻塞直到任务被处理完成或者出现异常。可以通过保存Future对象来跟踪查询异步任务的执行情...2012-02-20 16:48:00 · 224 阅读 · 0 评论 -
Semaphore
Semaphore 通常用于限制可以访问某些资源的线程数目,demo: package com.jerry.concurrency.semaphore;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent....2012-02-22 10:18:00 · 119 阅读 · 0 评论 -
CyclicBarrier
CyclicBarrier:多个线程同时工作以完成同一件事情,但在完成过程中,往往会等待其他线程都完成某一阶段后再执行,等所有线程都到达某一个阶段后再统一执行。CyclicBarrier最重要的属性就是参与者个数,另外最要方法是await()。当所有线程都调用了await()后,就表示这些线程都可以继续执行,否则就会等待。package com.jerry.concurrency;...2012-02-24 16:48:00 · 189 阅读 · 0 评论 -
BlockingQueue
BlockingQueue实现的生产者消费者模式:10个线程生产 1个线程消费 package com.jerry.concurrency;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Ex...2012-02-24 17:24:00 · 118 阅读 · 0 评论 -
Countdownlatch
个人感觉countdownlatch功能么有CyclicBarrier强大,demo如下:package com.jerry.concurrency;import java.util.Random;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;impo...2012-02-27 09:30:00 · 102 阅读 · 0 评论 -
Countdownlatch
个人感觉countdownlatch功能么有CyclicBarrier强大,demo如下:package com.jerry.concurrency;import java.util.Random;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;impo...2012-02-27 09:30:00 · 124 阅读 · 0 评论 -
Exchanger
<pre name="code" class="java">package com.jerry.concurrency;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Exchanger;import java.util.con...2012-02-27 10:40:00 · 126 阅读 · 0 评论 -
Exchanger
<pre name="code" class="java">package com.jerry.concurrency;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Exchanger;import java.util.con...2012-02-27 10:40:00 · 123 阅读 · 0 评论 -
RejectedPolicy--DiscardPolicy
package com.jerry.concurrency;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TestRejectedPolicy...2012-02-27 17:41:00 · 141 阅读 · 0 评论 -
RejectedPolicy--DiscardOldestPolicy
package com.jerry.concurrency;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TestRejectedPolicy...2012-02-27 17:46:00 · 118 阅读 · 0 评论 -
RejectedPolicy--AbortPolicy
package com.jerry.concurrency;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TestAbortPolicy {...2012-02-27 17:57:00 · 194 阅读 · 0 评论 -
RejectedPolicy--CallerRunsPolicy
package com.jerry.concurrency;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TestCallerRun...2012-02-28 09:20:00 · 243 阅读 · 0 评论 -
线程基础
原子操作:假设有操作A和操作B,从A的角度看,B要么没执行,要么全部执行完成,这样A、B互为原子操作。java强制原子性的内置锁机制:synchronized ,包括对锁对象的引用和锁保护的代码块。获得内部锁的唯一途径就是进入这个内部锁保护的代码块或方法中。内部锁是可以重进入的,当线程想获得他本身占有的锁时会成功的,这是因为jvm维护着锁的占有者和一个计算器,同一线程的一次请求,计数器会递增...2012-02-20 14:28:00 · 113 阅读 · 0 评论 -
单例模式完全解析
本文将探讨单例模式的各种情况,并给出相应的建议。单例模式应该是设计模式中比较简单的一个,但是在多线程并发的环境下使用却是不那么简单了。首先看最原始的单例模式。1 package xylz.study.singleton;2 3 public class Singleton {4 5 private static Singleton instance转载 2012-03-02 11:26:08 · 790 阅读 · 0 评论 -
RejectedPolicy--AbortPolicy
package com.jerry.concurrency;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TestAbortPolicy {原创 2012-02-27 17:57:40 · 2103 阅读 · 0 评论 -
RejectedPolicy--DiscardOldestPolicy
package com.jerry.concurrency;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TestRejectedPolicy {原创 2012-02-27 17:46:01 · 1940 阅读 · 1 评论 -
CyclicBarrier
CyclicBarrier: 多个线程同时工作以完成同一件事情,但在完成过程中,往往会等待其他线程都完成某一阶段后再执行,等所有线程都到达某一个阶段后再统一执行。CyclicBarrier最重要的属性就是参与者个数,另外最要方法是await()。当所有线程都调用了await()后,就表示这些线程都可以继续执行,否则就会等待。package com.jerry.concurrency;i原创 2012-02-24 16:48:46 · 921 阅读 · 0 评论 -
Semaphore
Semaphore 通常用于限制可以访问某些资源的线程数目,demo:package com.jerry.concurrency;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;//排队上原创 2012-02-22 10:18:48 · 582 阅读 · 0 评论 -
Countdownlatch
个人感觉countdownlatch功能么有CyclicBarrier强大,demo如下:package com.jerry.concurrency;import java.util.Random;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import原创 2012-02-27 09:30:12 · 557 阅读 · 0 评论 -
BlockingQueue
BlockingQueue实现的生产者消费者模式:10个线程生产 1个线程消费package com.jerry.concurrency;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executor原创 2012-02-24 17:24:36 · 623 阅读 · 0 评论 -
RejectedPolicy--CallerRunsPolicy
package com.jerry.concurrency;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TestCallerRunsPolicy原创 2012-02-28 09:20:47 · 1666 阅读 · 0 评论 -
ScheduledExecutorService
先来个传统的Timer的例子:package com.jerry.concurrency;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;publi原创 2012-02-28 10:22:49 · 9850 阅读 · 0 评论 -
线程基础
原子操作:假设有操作A和操作B,从A的角度看,B要么没执行,要么全部执行完成,这样A、B互为原子操作。 java强制原子性的内置锁机制:synchronized ,包括对锁对象的引用和锁保护的代码块。获得内部锁的唯一途径就是进入这个内部锁保护的代码块或方法中。内部锁是可以重进入的,当线程想获得他本身占有的锁时会成功的,这是因为jvm维护着锁的占有者和一个计算器,同一线程的一次请求,计数器会递增原创 2012-02-20 14:28:07 · 620 阅读 · 0 评论 -
Exchanger
package com.jerry.concurrency;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Exchanger;import java.util.concurrent.Executors;public class Test原创 2012-02-27 10:40:42 · 569 阅读 · 0 评论 -
RejectedPolicy--DiscardPolicy
package com.jerry.concurrency;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TestRejectedPolicy {原创 2012-02-27 17:41:47 · 1672 阅读 · 0 评论 -
ExecutorService
Callable和Future:ExecutorService 接口经常submit 方法返回一个对象,Future代表了一个异步任务的结果,可以用来取消任务、查询任务状态,还有通过get方法获得异步任务返回的结果。当调用get方法的时候,当前线程被阻塞直到任务被处理完成或者出现异常。可以通过保存Future对象来跟踪查询异步任务的执行情况。显然Runnab原创 2012-02-20 16:48:38 · 1470 阅读 · 0 评论 -
hashMap原理
java.util.HashMap是很常见的类,前段时间公司系统由于对HashMap使用不当,导致cpu百分之百,在并发环境下使用HashMap 而没有做同步,可能会引起死循环,关于这一点,sun的官方网站上已有阐述,这并非是bug。HashMap的数据结构 HashMap主要是用数组来存储数据的,我们都知道它会对key进行哈希运算,哈系运算会有重复的哈希值,对于哈希值转载 2012-03-02 11:16:36 · 3076 阅读 · 0 评论 -
ScheduledExecutorService
先来个传统的Timer的例子: package com.jerry.concurrency;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTa...2012-02-28 10:22:00 · 215 阅读 · 0 评论