
java-并发
yichudu
code anything
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
后台线程 Daemon
java.util.Timer.Timer(boolean isDaemon) 创建定时器用于执行后台线程。 Creates a new timer whose associated thread may be specified to run as a daemon.原创 2015-01-05 14:45:47 · 957 阅读 · 0 评论 -
Semaphore (信号量)
java.util.concurrent.Semaphore.Semaphore(int permits) 构造函数,指定许可证的数量。代表共享资源的个数。 Creates a Semaphore with the given number of permits and nonfair fairness setting. void java.util.concurrent.Semapho原创 2015-02-09 15:09:56 · 964 阅读 · 0 评论 -
CountDownLatch 闭锁
1.简述 从名字可以看出,CountDownLatch是一个倒数计数的锁, 当倒数到0时触发事件,也就是开锁,其他人就可以进入了。 2.相关类 java.util.concurrent.CountDownLatch 类。 java.util.concurrent.CountDownLatch.CountDownLatch(int count) 构造函数,设置计数器的初始值。原创 2016-06-06 14:39:47 · 578 阅读 · 0 评论 -
ConcurrentHashMap 并发哈希映射
ConcurrentHashMap 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程也想访问HashTable的同步方法,就会进入阻塞或轮询状态。 如线程1使用put进行添加元素,线程2不但不能使用put方法添加元素原创 2015-02-09 15:41:11 · 1364 阅读 · 0 评论 -
Thread 线程及 Runnable
Thread Thread java.lang.Thread.currentThread() 返回当前线程。 java.lang.Thread.Thread(Runnable target, String name) 创建新线程,并指定线程的名字。 String java.lang.Thread.getName() 返回线程名称。原创 2015-08-13 18:28:13 · 785 阅读 · 0 评论 -
java中的锁
1.synchronized 参见: 2.semaphore 参见:http://blog.csdn.net/chuchus/article/details/43671157 3.ReadWriteLock 参见:http://blog.csdn.net/chuchus/article/details/43670855 4.CountDownLatch 参见:http://b原创 2016-06-06 14:40:22 · 595 阅读 · 0 评论 -
synchornized
我们期望generator.next()每次都产生的是偶数,这在单线程下没任何问题。但多线程下就会有产生奇数的可能。 import java.util.concurrent.*; public class EvenGenerator { public boolean isCanceled = false; private volatile int currentEvenVa原创 2014-12-17 13:39:12 · 1077 阅读 · 0 评论 -
ReentrantReadWriteLock
ReadWriteLock 一个接口。适用于对容器 写不频繁读频繁 的场景。 ReadWriteLock使得你可以同时有多个读者,只要它们都不试图写入即可。如果写锁已经被其他任务持有,那么任何读者都不能访问,也不能再次写入,直到这个写锁被释放为止。 java.util.concurrent.locks.ReentrantReadWriteLock.ReentrantReadWriteL原创 2015-02-09 14:52:30 · 849 阅读 · 0 评论 -
ThreadLocal 为线程绑定对象
java.lang.ThreadLocal 类,对它的调用在不同线程中有不同的结果。 1.使用场景 有些类不是线程安全的,若想在多线程下使用,我们可以为每个线程绑定一个此类的对象。 2.常用方法 T java.lang.ThreadLocal.get() 返回当前线程所持有的对象。 void java.lang.ThreadLocal.set(T value) 设置当前线程原创 2016-05-11 13:38:33 · 3661 阅读 · 0 评论 -
ExecutorService 线程池及 Callable, Future, CompletableFuture
1.ThreadPoolExecutor java.util.concurrent.ThreadPoolExecutor 类。用于接收提交的任务,放到线程池中运行。 java.util.concurrent.ThreadPoolExecutor.ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAlive原创 2016-01-28 13:29:57 · 1270 阅读 · 0 评论 -
线程安全
1.线程安全 多线程多次执行同样的代码,总能获得确定的结果,即不存在不确定的竞争,那么就称这段代码为Thread-safe. 2.如何线程安全地使用非安全对象 有些类是别人写的,自己不能再修改源码,那么如何做到安全地并发使用呢? 2.1 局部变量 2.2 加锁 2.3 为每个线程维护一个对象 2.4 例子 假设SimpleDateFormat是不安全的,为了安全地使用,对应上面的三原创 2016-05-11 10:51:14 · 918 阅读 · 1 评论 -
原子类 与 volatile
AtomicInteger、Long、etc int java.util.concurrent.atomic.AtomicInteger.addAndGet(int delta) 原子性地给当前值增加指定的值,然后返回新值。 Atomically adds the given value to the current value. //: concurrency/AtomicIntegerTes原创 2014-12-27 19:40:08 · 816 阅读 · 0 评论 -
线程同步 wait()、notify()
//: concurrency/waxomatic/WaxOMatic.java // Basic task cooperation. import java.util.concurrent.*; class Car { private boolean waxOn = false; //true表示打完蜡该抛光了 public synchronized void waxed原创 2014-12-17 19:44:30 · 1064 阅读 · 0 评论 -
java.util.concurrent.Queue 并发队列
ConcurrentLinkedQueue java.util.concurrent.ConcurrentLinkedQueue Queue的一个线程安全实现。 public class ConcurrentLinkedQueue extends AbstractQueue implements Queue, java.io.Serializable {} LinkedBl原创 2015-05-09 15:42:38 · 2832 阅读 · 0 评论 -
java.util.concurrent.CopyOnWriteArrayList 线程安全的List
1.定义 public class CopyOnWriteArrayList implements List, RandomAccess, Cloneable, java.io.Serializable{} CopyOnWriteArrayList是ArrayList 的一个线程安全的变体,其中所有修改操作(add、set等)都是通过对底层数组进行一次新的复制来实现的。这一般需要很大的开销,原创 2015-12-10 15:50:22 · 1285 阅读 · 0 评论 -
java.util.concurrent.ConcurrentSkipListSet 基于跳跃链表的并发set
1.定义 public class ConcurrentSkipListSet extends AbstractSet implements NavigableSet, Cloneable, java.io.Serializable {} 明显地,我们的元素需要实现 comparable 接口。原创 2015-12-10 15:31:29 · 1792 阅读 · 0 评论 -
线程安全的并发集合类
1.简述 实现一个线程安全的集合并不难,难的是尽可能的消除并发带来的竞争瓶颈,提升效率。 所以JDK自带的并发类的意义与技术含量在于这里。 2.List 没有通用的实现类,只有一个使用场景受限的类:CopyOnWriteArrayList。 可移步:http://blog.csdn.net/chuchus/article/details/50250697。 3.Queue 可移步:原创 2015-12-10 16:00:10 · 1631 阅读 · 0 评论 -
Timer 定时器
需要的类为 java.util.Timer、java.util.TimerTask。 1.创建一个继承自TimerTask类的类A,并重写run()方法。 2.创建Timer对象,调用schedule()方法并把自定义类A的对象当作实参传进去。 import java.util.Timer; class TimerTaskTest extends TimerTask { @Overri原创 2014-11-30 19:00:28 · 827 阅读 · 0 评论 -
java 偏向锁优化技术
1.简介这是jvm的多线程优化技术. 偏向锁,它会偏向于第一个访问该锁的线程. 如果在接下来的运行过程中,该锁没有被其他的线程访问,则持有偏向锁的线程将永远不需要触发同步。 如果在运行过程中,遇到了其他线程抢占该锁,则持有偏向锁的线程会被挂起,JVM会尝试消除它身上的偏向锁,将锁恢复到标准的轻量级锁。2.消除偏向锁如果一个锁只被单线程用到, 那么偏向锁的优化是有意义的. 如果自己确定自己的代码,原创 2017-03-07 10:26:31 · 1767 阅读 · 0 评论