并发编程
ray小菜
后起跑的乌龟,keep hungry
展开
-
使用CompletableFuture进行并发编程
CompletableFuture并发编程一、前言 函数式编程在java1.8中有一个不得不说的特性,函数式编程,虽然说这个好像违背了java的oop思想,但是终究抵不过真香定律,尤其是各种集合操作,本次主要记录下函数式编程在并发编程中的应用函数式接口先看一段代码public class TestFunction { public static void main(String[] args) { //调用方法 String result = testExecut原创 2020-08-16 23:06:45 · 872 阅读 · 0 评论 -
从CountDownLatch来进行AbstractQueuedSynchronizer入门
从CountDownLatch来看AQS大背景在java1.5中引入了 CyclicBarrier、Semaphore,CountDownLatch等并发工具类,而此类工具类的实现其实都是基于大名鼎鼎的AbstractQueuedSynchronizer来实现直接来看aqs可能较为抽象,我们可以先看一个简单的实现吧,这里就用countdownlatch来开始入手一、CountDownLatch的概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来原创 2020-08-02 22:51:37 · 144 阅读 · 0 评论 -
java并发编程世界概略图
并发编程概况图一、我们先用一张概略图来展示一下二、并发编程带来的好处和问题并发编程的本质:一个消耗时间任务我们如何去尽快的完成呢?现实生活中可能就是说给你加个人,两天的活儿一天干完吧程序的世界里面也一样,给你加个线程,尽快搞完吧,**那么区别在哪里呢,**这就是并发编程带来的问题:举个例子,弄五个苹果做个果盘:人是智能的,可以较好的相互沟通来处理好分工,同步,协作分工: 甲洗4个苹果,乙洗完1个苹果之后,然后切完摆盘同步: 乙切苹果摆盘,甲不能参与协作: 甲洗完4个苹果之后将苹果原创 2020-06-21 17:46:39 · 148 阅读 · 0 评论 -
线程池的参数说明
关于线程池的说明理论基础:由于CPU的速度远远快于内存的速度,为了充分的利用CPU的资源,操作系统会将CPU的计算进行分时复用目前普遍采用的是时间片轮询的方式来调度cpu资源在我们的java语言中,创建线程就像是new一个对象那么简单,但是实际上由于java的多线程是创建的内核级线程,和系统操作的线程一一对应,资源的分配调度都是由操作系统来进行管理,开销很大 (golang的协程是程序会有自己 的资源调度器);如何创建一个线程池ThreadPoolExecutor的创建方式,这么多构造参数是不原创 2020-06-21 14:14:25 · 186 阅读 · 0 评论 -
java并发编程理论部分
java并发编程理论Chapter1 并发编程的幕后背景1.计算机的发展历程上,电脑的性能一直在提升,但是核心的矛盾一直存在,我们的cpu,内存,磁盘之间的巨大速度差异为了解决这个问题,最大的获取计算机的性能,那么就需要去平衡硬件的性能,方案如下:cpu添加缓存,L1,L2,L3的缓存(电脑任务管理器的CPU栏可以看到),L1,L2是非共享的缓存,L3是共享操作系统添加了进程,线程,用来进行分时复用cpu,用来均衡cpu和io的速度差异编译程序的指令可能会进行优化来更加充分的利用缓存(双循原创 2020-06-21 12:35:32 · 99 阅读 · 0 评论