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 · 902 阅读 · 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 · 919 阅读 · 0 评论 -
CountDownLatch 闭锁
1.简述从名字可以看出,CountDownLatch是一个倒数计数的锁, 当倒数到0时触发事件,也就是开锁,其他人就可以进入了。2.相关类java.util.concurrent.CountDownLatch类。java.util.concurrent.CountDownLatch.CountDownLatch(int count)构造函数,设置计数器的初始值。原创 2016-06-06 14:39:47 · 531 阅读 · 0 评论 -
ConcurrentHashMap 并发哈希映射
ConcurrentHashMap效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程也想访问HashTable的同步方法,就会进入阻塞或轮询状态。如线程1使用put进行添加元素,线程2不但不能使用put方法添加元素原创 2015-02-09 15:41:11 · 1310 阅读 · 0 评论 -
Thread 线程及 Runnable
ThreadThread java.lang.Thread.currentThread()返回当前线程。java.lang.Thread.Thread(Runnable target, String name)创建新线程,并指定线程的名字。String java.lang.Thread.getName()返回线程名称。原创 2015-08-13 18:28:13 · 741 阅读 · 0 评论 -
java中的锁
1.synchronized参见:2.semaphore参见:http://blog.csdn.net/chuchus/article/details/436711573.ReadWriteLock参见:http://blog.csdn.net/chuchus/article/details/436708554.CountDownLatch参见:http://b原创 2016-06-06 14:40:22 · 546 阅读 · 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 · 1035 阅读 · 0 评论 -
ReentrantReadWriteLock
ReadWriteLock一个接口。适用于对容器 写不频繁读频繁 的场景。ReadWriteLock使得你可以同时有多个读者,只要它们都不试图写入即可。如果写锁已经被其他任务持有,那么任何读者都不能访问,也不能再次写入,直到这个写锁被释放为止。 java.util.concurrent.locks.ReentrantReadWriteLock.ReentrantReadWriteL原创 2015-02-09 14:52:30 · 804 阅读 · 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 · 3591 阅读 · 0 评论 -
ExecutorService 线程池及 Callable, Future, CompletableFuture
1.ThreadPoolExecutorjava.util.concurrent.ThreadPoolExecutor类。用于接收提交的任务,放到线程池中运行。java.util.concurrent.ThreadPoolExecutor.ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAlive原创 2016-01-28 13:29:57 · 1203 阅读 · 0 评论 -
线程安全
1.线程安全多线程多次执行同样的代码,总能获得确定的结果,即不存在不确定的竞争,那么就称这段代码为Thread-safe.2.如何线程安全地使用非安全对象有些类是别人写的,自己不能再修改源码,那么如何做到安全地并发使用呢?2.1 局部变量2.2 加锁2.3 为每个线程维护一个对象2.4 例子假设SimpleDateFormat是不安全的,为了安全地使用,对应上面的三原创 2016-05-11 10:51:14 · 868 阅读 · 1 评论 -
原子类 与 volatile
AtomicInteger、Long、etcint 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 · 778 阅读 · 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 · 1013 阅读 · 0 评论 -
java.util.concurrent.Queue 并发队列
ConcurrentLinkedQueuejava.util.concurrent.ConcurrentLinkedQueueQueue的一个线程安全实现。public class ConcurrentLinkedQueue extends AbstractQueue implements Queue, java.io.Serializable {}LinkedBl原创 2015-05-09 15:42:38 · 2758 阅读 · 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 · 1227 阅读 · 0 评论 -
java.util.concurrent.ConcurrentSkipListSet 基于跳跃链表的并发set
1.定义public class ConcurrentSkipListSet extends AbstractSet implementsNavigableSet, Cloneable, java.io.Serializable {}明显地,我们的元素需要实现 comparable 接口。原创 2015-12-10 15:31:29 · 1730 阅读 · 0 评论 -
线程安全的并发集合类
1.简述实现一个线程安全的集合并不难,难的是尽可能的消除并发带来的竞争瓶颈,提升效率。所以JDK自带的并发类的意义与技术含量在于这里。2.List没有通用的实现类,只有一个使用场景受限的类:CopyOnWriteArrayList。可移步:http://blog.csdn.net/chuchus/article/details/50250697。3.Queue可移步:原创 2015-12-10 16:00:10 · 1595 阅读 · 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 · 795 阅读 · 0 评论 -
java 偏向锁优化技术
1.简介这是jvm的多线程优化技术. 偏向锁,它会偏向于第一个访问该锁的线程. 如果在接下来的运行过程中,该锁没有被其他的线程访问,则持有偏向锁的线程将永远不需要触发同步。 如果在运行过程中,遇到了其他线程抢占该锁,则持有偏向锁的线程会被挂起,JVM会尝试消除它身上的偏向锁,将锁恢复到标准的轻量级锁。2.消除偏向锁如果一个锁只被单线程用到, 那么偏向锁的优化是有意义的. 如果自己确定自己的代码,原创 2017-03-07 10:26:31 · 1728 阅读 · 0 评论