并发
文章平均质量分 68
BOY
这个作者很懒,什么都没留下…
展开
-
中断为什么能结束线程
一个常用但但并不一定能中断线程方法(因为如果此线程阻塞,则前面的判断可能会永远执行不到)package seven;import java.math.BigInteger;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import common.U原创 2012-08-02 15:50:41 · 1040 阅读 · 0 评论 -
线程的中断
package seven;import common.Utils;/** * * 线程的阻塞 * 引起线程阻塞的方法有 sleep() wait(),join(会造成当前线程的阻塞,而前面两个会造成调用线程的阻塞) * 当线程阻塞时,会进行阻塞队列,当有一个线程向阻塞线程发出中断请求时,被请求线程会在合理时刻对请求 * 进行处理,如果被请求的线程处于阻塞状态,则其会抛出 I原创 2012-08-02 10:04:39 · 417 阅读 · 0 评论 -
ConcurrentSkipListMap
http://hi.baidu.com/yao1111yao/item/0f3008163c4b82c938cb306d-----------------ConcurrentSkipListMap----------------- ConcurrentSkipListMap提供了一种线程安全的并发访问的排序映射表。内部是SkipList(跳表)结构实现,在理论上能够转载 2012-08-01 15:10:22 · 6661 阅读 · 1 评论 -
Java深度历险(三)——Java线程:基本概念、可见性与同步
http://www.infoq.com/cn/articles/cf-java-thread开发高性能并发应用不是一件容易的事情。这类应用的例子包括高性能Web服务器、游戏服务器和搜索引擎爬虫等。这样的应用可能需要同时处理成千上万个请求。对于这样的应用,一般采用多线程或事件驱动的架构。对于Java来说,在语言内部提供了线程的支持。但是Java的多线程应用开发会遇到很多问题。首转载 2012-08-02 10:11:36 · 828 阅读 · 0 评论 -
金山面试题--四个线程a,b,c,d. 线程a,b对变量i加一. 线程c,d对变量i减去一.四个线程顺序执行, 每个线程每次只执行一次.i的初始值为0, 打印结果0 1 2 1 0 1 2 1 0 1
/** * * 四个线程,a b c d ,共享一个变量 i ab 为加线程, cd 为减线程,四个线程执行顺序为 abcd,且输出为 0 1 2 1 0 1 2 1 0 * 1..... 共享一个变量,我们可以加一个锁就够了,关键是什么执行,什么时候等待 * 其中一个线程执行后,会唤醒所有线程,进行CPU竞争,当然也包括它自己,一共四个线程,我们可以分配两个开关 ,flag1,flag原创 2012-10-22 10:32:29 · 7648 阅读 · 1 评论 -
线程的停止
package concurrency.sharingobject;/** * * @author Administrator * 对于线程的停止 ,我们可以用两种方法 * 1 .定义开关变量 ,但这种方法有缺陷 ,对于正处于阻塞状态的线程无法执行中断操作 * while(!stopped){ * while(xx) * wait(); * } 2原创 2012-11-07 13:48:24 · 471 阅读 · 0 评论 -
创建并发缓存
package concurrency.synchronizer;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;interface Compute { public Integer compute(Integer key);}/** * 对于一个较大运算量的缓存来说,这样的效果是远远不够原创 2012-11-16 09:08:54 · 514 阅读 · 0 评论 -
Java 中的Double Check Lock
对于多线程编程来说,同步问题是我们需要考虑的最多的问题,同步的锁什么时候加,加在哪里都需要考虑,当然在不影响功能的情况下,同步越少越好,锁加的越迟越优是我们都必须认同的。DCL(Double Check Lock)就是为了达到这个目的。 DCL简单来说就是check-lock-check-act,先检查再锁,锁之后再检查一次,最后才执行操作。这样做的目的是尽可能的推迟锁的时间。网上普遍举的转载 2013-01-07 10:48:53 · 567 阅读 · 0 评论 -
Java并发编程网经典--深入理解java内存模型系列文章
http://ifeve.com/java-memory-model-0/原创 2013-04-30 19:41:04 · 893 阅读 · 0 评论 -
计算线程运行时间
package five;import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;import common.Utils;public class CountThreadRunTime { private static final int threadNumber = 3;原创 2012-07-31 17:15:11 · 3106 阅读 · 0 评论 -
高速缓存
package five;/** * * K 表示输入的值,V 表示输出的值 * * @param * @param */public interface Computable { V compute(K arg);}package five;import java.math.BigInteger;import common.Utils;public原创 2012-07-31 19:02:35 · 554 阅读 · 0 评论 -
共享变量的可以见性
package first;import java.util.concurrent.TimeUnit;public class NoVisible { private static boolean ready = false; private static int number=10; private static Object lock = new Object(原创 2012-07-28 10:25:47 · 492 阅读 · 0 评论 -
ThreadLocal操作
package first;import java.util.concurrent.TimeUnit;public class ThreadLocals { static ThreadLocal locals = new ThreadLocal() { // 定义一个共享的 ThreadLocal,在不同的线程里面保存的值不同,都是保存 protected Integer ini原创 2012-07-28 15:29:19 · 557 阅读 · 0 评论 -
同步容器,复合操作客户端加锁
package five;import java.util.Vector;import common.Utils;/** * vector 中有七个元素,用七个线程去删除它们 删除操作定义为 int i = vec.size()-1; vec.remove(i); 由于此为 * vector 的复合操作,虽然 vector 的单个操作(一个方法)为原子性线程安全,但复合方法就不能保原创 2012-07-29 16:09:16 · 767 阅读 · 0 评论 -
客户端加锁
package first;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.concurrent.TimeUnit;public class ClientLock { static List list = Collections.s原创 2012-07-29 09:39:41 · 688 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。ConcurrentHashMap的内部结构Concurre转载 2012-07-30 10:40:37 · 427 阅读 · 0 评论 -
正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种主要转载 2012-07-30 11:06:02 · 662 阅读 · 0 评论 -
CountDownLatch
package five;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.concurrent.CountDownLatch;public class CountDownLatches { private sta原创 2012-07-31 16:10:05 · 427 阅读 · 0 评论 -
FutureTask
package five;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;import j原创 2012-07-31 16:48:04 · 1081 阅读 · 0 评论 -
MESI protocol
http://en.wikipedia.org/wiki/MESI_protocol转载 2013-05-07 09:53:21 · 1389 阅读 · 0 评论