随笔 - 424  文章 - 0  评论 - 13  阅读 - 90万

随笔分类 -  Java多线程

LongAdder基础
摘要:LongAdder是JDK8中并发包中的一个新类,和AtomicLong都使用CAS,但是性能比AtomicLong更好。 LongAdder在AtomicLong的基础上进行了热点分离,热点分离类似于有锁操作中的减小锁粒度,将一个锁分离成若干个锁来提高性能。在无锁中,也可以用类似的方式来增加CAS 阅读全文
posted @ 2016-02-23 22:08 lnlvinso 阅读(1680) 评论(0) 推荐(0) 编辑
利用回调实现Java的异步调用
摘要:异步是指调用发出后,调用者不会立刻得到结果,而是在调用发出后,被调用者通知调用者,或通过回调函数处理这个调用。 回调简单地说就是B中有一个A,这样A在调用B的某个方法时实际上是调用到了自己的方法。 利用回调可以实现Java的异步调用,下面的例子来自网上。 回调接口: public inte... 阅读全文
posted @ 2015-09-01 23:59 lnlvinso 阅读(2338) 评论(0) 推荐(0) 编辑
Future模式
摘要:利用JDK提供的Future可以轻易的方法的完成同步非阻塞调用,类似于NIO中的管家,实现的也是同步非阻塞。public class FutureTaskTest { public static void main(String[] args) { ExecutorService es = E... 阅读全文
posted @ 2015-08-31 23:17 lnlvinso 阅读(373) 评论(0) 推荐(0) 编辑
Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated ?
摘要:Thread.stop, Thread.suspend, Thread.resume被标记为废弃的方法。在查看JDK的文档时,提到了下面的参考文章,先是英文版,接着是中文翻译。 Why is Thread.stop deprecated?Because it is inherently uns... 阅读全文
posted @ 2015-08-31 22:40 lnlvinso 阅读(489) 评论(0) 推荐(0) 编辑
notify丢失、虚假唤醒
摘要:notify丢失: 假设线程A因为某种条件在条件队列中等待,同时线程B因为另外一种条件在同一个条件队列中等待,也就是说线程A/B都被同一个Object.wait()挂起,但是等待的条件不同。 现在假设线程B的线程被满足,线程C执行一个notify操作,此时JVM从Object.wait()的... 阅读全文
posted @ 2015-08-23 23:33 lnlvinso 阅读(3637) 评论(0) 推荐(0) 编辑
java中的各种Queue
摘要:java中的各种并发Queue可以归为以下的几种: ConcurrentLinkedQueue: 一个由链表结构组成的非阻塞队列ArrayBlockingQueue :一个由数组结构组成的有界阻塞队列LinkedBlockingQueue :一个由链表结构组成的有界阻塞队列PriorityBlo... 阅读全文
posted @ 2015-08-23 18:25 lnlvinso 阅读(1046) 评论(0) 推荐(0) 编辑
关闭线程的一些问题
摘要:Thread.stop方法,虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,不应该使用stop方法来关闭Java的线程。 正确的方法应该是设置volatile boolean stop = false;,这样所有线程可以及时发现stop值的变化,线程运行的过程中周期性... 阅读全文
posted @ 2015-08-17 23:32 lnlvinso 阅读(231) 评论(0) 推荐(0) 编辑
Exchanger
摘要:Exchanger可以在两个线程之间交换数据,只能是2个线程,不支持更多的线程之间互换数据。 当线程A调用Exchange对象的exchange()方法后,他会进入阻塞状态,直到线程B也调用了exchange()方法,然后以线程安全的方式交换数据,之后线程A和B继续运行。 Exchanger... 阅读全文
posted @ 2015-08-16 23:48 lnlvinso 阅读(250) 评论(0) 推荐(0) 编辑
ThreadLocal
摘要:ThreadLocalMap的定义是在ThreadLocal类中,真正的引用却是在Thread类中。 ThreadLocalMap中用于存储数据的entrystatic class Entry extends WeakReference { /** The value a... 阅读全文
posted @ 2015-07-31 23:55 lnlvinso 阅读(289) 评论(0) 推荐(0) 编辑
CAS基础和原子类
摘要:基于CAS实现的AtomicInteger、 AtomicLong、 AtomicReference、 AtomicBoolean也被称为乐观锁。 CAS的语义是“我认为V的值应该为A,如果是,那么将V的值更新为B,否则不修改并告诉V的值实际为多少”。当多个线程尝试使用CAS同时更新同一个变量... 阅读全文
posted @ 2015-07-21 23:53 lnlvinso 阅读(931) 评论(0) 推荐(0) 编辑
Java锁概念基础
摘要:Java中的锁不管是Lock还是synchronized都可以分为互斥锁和非互斥锁。 互斥锁只能被一个线程持有,其他线程只能等待锁的释放。synchronized,ReentrantLock,ReadWriteReentrantLock的WriteLock是互斥的,但ReadLock不是互斥的... 阅读全文
posted @ 2015-07-19 12:01 lnlvinso 阅读(500) 评论(0) 推荐(0) 编辑
生产者消费者模式
摘要:学习Java的多线程,生产者消费者模式是避免不了的。下面将以wait/notify,await/singal,blockingquene几种方式来实现生产者消费者模式。 下面的仅仅是例子,实际应用中应该使用Executor来完成,并且保证线程及线程池可以正常关闭。实际使用中需要考虑的情况是生产... 阅读全文
posted @ 2015-07-18 17:40 lnlvinso 阅读(684) 评论(0) 推荐(0) 编辑
ThreadPoolExecutor
摘要:使用Java自带的线程池,一般都是如下的使用:ExecutorService exec = Executors.newCachedThreadPool(); //will create one thread for each task for(int i=0;i()); ... 阅读全文
posted @ 2015-07-12 12:19 lnlvinso 阅读(1227) 评论(0) 推荐(0) 编辑
深入理解Java内存模型之系列篇[转]
摘要:原文链接:http://blog.csdn.net/ccit0519/article/details/11241403 深入理解Java内存模型(一)——基础 并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)... 阅读全文
posted @ 2015-07-05 22:39 lnlvinso 阅读(267) 评论(0) 推荐(0) 编辑
volatile
摘要:volatile 可以看做是一种轻量级的synchronized实现,volatile实现的仅仅是synchronized的部分功能,但是开销较synchronized小。特定的情形下,使用volatile会更为合适。 synchronized提供了两种主要特性:互斥 和可见性。互斥即同一... 阅读全文
posted @ 2015-07-01 22:29 lnlvinso 阅读(259) 评论(0) 推荐(0) 编辑
Java多线程基础(二)
摘要:信号量Semaphore,类似于锁的功能,用于多线程中对一组资源的控制。 acquire方法用于尝试获取一个资源,未获取前将一直等待。release用于释放一个资源,release的前提是已经获得了一个资源。 package multiThread;import java.util.concu... 阅读全文
posted @ 2015-06-10 22:50 lnlvinso 阅读(202) 评论(0) 推荐(0) 编辑
Java多线程基础(一)
摘要:一个简单的多线程的例子:package multiThread;public class BasicThread implements Runnable{ private int countDown = 10; private static int taskCount = ... 阅读全文
posted @ 2015-05-31 22:47 lnlvinso 阅读(269) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示