随笔分类 -  多线程

摘要:大家好,我是小黑,一个在互联网苟且偷生的农民工。 在上一期我们讲了Thread.join()方法和CountDownLatch,这两者都可以做到等待一个线程执行完毕之后当前线程继续执行,并且CountDownLatch要更优秀,能满足同时等待多个线程执行,我们通过查看源码知道CountDownLat 阅读全文
posted @ 2021-09-24 10:49 Bonnie_ξ 阅读(37) 评论(0) 推荐(0) 编辑
摘要:1 线程池的方法 执行长期任务性能好,创建一个线程池,一池有N个固定的线程,可以控制线程最大并发数,有固定线程数的线程池 ExecutorService threadPool = Executors.newFixedThreadPool(N); 单个任务执行,它只会使用单个工作线程,一池一线程 Ex 阅读全文
posted @ 2021-08-30 11:46 Bonnie_ξ 阅读(34) 评论(0) 推荐(0) 编辑
摘要:前言 CyclicBarrier和CountDownLatch这两个工具都是在java.util.concurrent包下,并且平时很多场景都会使用到。 本文将会对两者进行分析,记录他们的用法和区别。 CountDownLatch CountDownLatch是一个非常实用的多线程控制工具类,称之为 阅读全文
posted @ 2021-08-18 17:26 Bonnie_ξ 阅读(137) 评论(0) 推荐(0) 编辑
摘要:synchronized的使用 synchronized的使用可以修饰代码块,也可以修饰对象方法,以及静态方法。不过这些修饰的本质实质就只是锁的资源不同,一种是对象,一种是类。 修饰代码块 错误代码:this,对象锁 当我们使用不同实例对象去调用方法的时候会发现结果并不是我们想象的20000,因为t 阅读全文
posted @ 2021-08-15 12:37 Bonnie_ξ 阅读(65) 评论(0) 推荐(0) 编辑
摘要:1. Semaphore 是什么? Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目。 2. 怎么使用 Semaphore? 2.1 构造方法 public Semaphore(int permits) public Semaphore(int permits, bo 阅读全文
posted @ 2021-08-10 15:31 Bonnie_ξ 阅读(876) 评论(0) 推荐(0) 编辑
摘要:1.AtomicInteger的基本方法 (1) 创建一个不传值的,此时默认值为0 AtomicInteger atomicInteger = new AtomicInteger(); System.out.println(atomicInteger.get()); >输出: 0 (2) set() 阅读全文
posted @ 2021-07-29 15:03 Bonnie_ξ 阅读(268) 评论(0) 推荐(0) 编辑
摘要:scheduleAtFixedRate 每间隔一段时间执行,分为两种情况: /** * 任务执行时间(8s)小于间隔时间(10s) */ public class ScheduleTest { static ScheduledExecutorService scheduler = Executors 阅读全文
posted @ 2021-06-28 09:27 Bonnie_ξ 阅读(68) 评论(0) 推荐(0) 编辑
摘要:CyclicBarrier【循环栅栏】 循环栅栏,类似倒计数器,也是用来阻塞线程,不过它的重点在于循环使用 而倒计数器只能用一次(这属于他们之间最明显的一个区别) 下面我们看几个循环栅栏 CyclicBarrier 内部的方法: 构造方法:public CyclicBarrier(int parti 阅读全文
posted @ 2021-05-13 11:53 Bonnie_ξ 阅读(89) 评论(0) 推荐(0) 编辑
摘要:https://mp.weixin.qq.com/s/j2EtFf_hOJm9L_y2jje7uQ CountDownLatch 解释: CountDownLatch相当于一个门闩,门闩上挂了N把锁。只有N把锁都解开的话,门才会打开。怎么理解呢?我举一个赛跑比赛的例子,赛跑比赛中必须等待所有选手都准 阅读全文
posted @ 2021-04-30 13:52 Bonnie_ξ 阅读(141) 评论(0) 推荐(0) 编辑
摘要:案例 package com.zxwa.ntmss.img2text; import com.alibaba.fastjson.JSONObject; import com.zxwa.ntmss.img2text.utils.FileUtils; import com.zxwa.ntmss.proc 阅读全文
posted @ 2021-04-20 10:35 Bonnie_ξ 阅读(73) 评论(0) 推荐(0) 编辑
摘要:文章目录 一、方法说明 1、shutdown():停止接收新任务,原来的任务继续执行 2、shutdownNow():停止接收新任务,原来的任务停止执行 3、awaitTermination(long timeOut, TimeUnit unit):当前线程阻塞 二、区别 1、shutdown() 阅读全文
posted @ 2021-01-13 14:21 Bonnie_ξ 阅读(265) 评论(0) 推荐(0) 编辑
摘要:1.背景: countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 存在于java.util.cucurrent包下。 2.概念 countDownLatch这个 阅读全文
posted @ 2020-12-31 11:28 Bonnie_ξ 阅读(94) 评论(0) 推荐(0) 编辑
摘要:定义 一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。队列的头部 是队列中时间最长的元素。队列的尾部 是队列中时间最短的元素。 新的元素插入到队列的尾部,队列获取操作从队列头部获得元素。当多个线程共享访问一个公共 collection 时,Concurrent 阅读全文
posted @ 2020-12-31 11:20 Bonnie_ξ 阅读(456) 评论(0) 推荐(0) 编辑
摘要:阻塞队列是什么? 首先了解队列,队列是数据先进先出的一种数据结构。阻塞队列,关键字是阻塞,先理解阻塞的含义,在阻塞队列中,线程阻塞有这样的两种情况: 1.当阻塞队列为空时,获取队列元素的线程将等待,直到该则塞队列非空; 2.当阻塞队列变满时,使用该阻塞队列的线程会等待,直到该阻塞队列变成非满。 为什 阅读全文
posted @ 2020-12-29 16:31 Bonnie_ξ 阅读(150) 评论(0) 推荐(0) 编辑

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