被世界遗弃的江的博客

我正在城楼观山景, 耳听得城外乱纷纷。

深入学习理解(8):java-ThreadLocal详解

ThreadLocal是什么?有什么用?怎么用? 1。ThreadLocal是什么 带着这样的问题我们来学习一下java并发编程中的一个重要的角色分子ThreadLocal。 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程...

2017-02-23 16:05:20

阅读数:3709

评论数:6

深入学习理解(9):java:AbstractQueuedSynchronizer详解

导读: 前一阵子在写轻量级RPC框架的时候,由于系统中所需要用异步RPC模型,由于系统所要求性能比较苛刻,所以基本所有耗时的操作都会采用异步调用的方式:比如异步读写DB,IO,更可能redis的操作都需要异步(主程说了,我咋办,做呗)。 基于Netty的轻量级rpc框架已经开源,想去了解的小伙...

2018-10-01 16:18:25

阅读数:38

评论数:0

深入学习理解(7):java:高效的解决死锁问题的线程通讯方式:Semaphore 和 BlockingQueue

经典原始问题:生产者和消费者的问题,其实在实际项目中很容易遇到这样的无奈的问题,但是面对这样的问题的时候我们首先想到的就是多线程批处理,通过notify()…………的处理,但只这样的处理只能给我们贴上对java多线程不熟悉的标签。比较赞的办法是用Semaphore 或者 BlockingQueue...

2017-02-23 18:45:48

阅读数:1185

评论数:0

深入学习理解(6):java:CountDownLatch详解

今天在公司学习看到了它,翻一番文档,正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,...

2016-11-12 15:33:43

阅读数:4940

评论数:4

深入学习理解(5):java:并发容器之CopyOnWriteArrayList

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实...

2016-10-23 16:56:22

阅读数:215

评论数:0

深入学习理解(4):java :ExecutorService中submit和execute的区别

在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。 一、创建任务任务就...

2016-06-27 17:59:07

阅读数:904

评论数:0

深入学习理解(3):java:CompletionService解决ExecutorService的submit方法的缺点

在ExecutorService的submit方法中可以获取返回值,通过Future的get方法,但是这个Future类存在缺陷,Future接口调用get()方法取得处理后的返回结果时具有阻塞性,也就是说调用Future的get方法时,任务没有执行完成,则get方法要一直阻塞等到任务完成为止。 ...

2016-06-27 17:49:01

阅读数:2614

评论数:2

深入学习理解(2):java 并发学习之ExecutorService

在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性 一、创建任务 任...

2016-06-24 09:33:48

阅读数:1285

评论数:0

深入学习理解(1):java:ExecutorService invokeAll 任务的批量提交invokeAll两种方法的区别

ExecutorService的invokeAll方法有两种用法:1.exec.invokeAll(tasks)2.exec.invokeAll(tasks, timeout, unit)其中tasks是任务集合,timeout是超时时间,unit是时间单位两者都会堵塞,必须等待所有的任务执行完成...

2016-06-23 09:43:31

阅读数:10262

评论数:2

提示
确定要删除当前文章?
取消 删除