多线程
dengjili
一个人在党性、真诚、智慧三样东西中,只可能拥有两样
update by 2022/2/9
同时拥有党性、真诚、智慧,已经不是普通人
展开
-
创建线程的两种传统方式
线程创建创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成: class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) {原创 2017-12-09 17:14:10 · 196 阅读 · 0 评论 -
Java线程池核心代码分析 jdk1.8 (ThreadPoolExecutor 二)
基于上文讲解了Java线程池设计思想 (ThreadPoolExecutor 一),接下来我们将线程池思想与代码落地特殊说明,分析源码切记不要每一行代码都去分析,因为很多细节都是针对一些特定的问题,需要对特定的知识有一些了解,我们只需要对主要代码了解即可,具体细节需要去debug。代码分析给出一份代码,构建一个线程,定义4个任务,交由线程池处理public class ThreadPool...原创 2019-08-31 12:22:20 · 239 阅读 · 0 评论 -
Java线程池设计思想 (ThreadPoolExecutor 一)
当我要去了解Java线程池设计思想时候,网上的讲解都是没有讲解到核心问题,大多数都是贴代码讲解,没办法我只能去调试jdk中源码来了解,本文是给我有一样疑问的人讲解线程池设计思想,而不是针对具体实现。线程池的演进现在需要创建大量的任务,给出一个场景思考,假设需要处理10000个任务,如下图所示,我们来分析一下以下传统方式的弊端问题1)假设当前电脑为4核处理器,理想状态是创建4个或8个任...原创 2019-08-31 11:47:49 · 518 阅读 · 0 评论 -
分析java线程死锁
编写死锁程序其中公共所为字符串A、B线程A先获取公共所A,再获取B线程B先获取公共所B,再获取A造成公共资源死锁import java.util.concurrent.TimeUnit;public class LockTest { public static void main(String[] args) { Thread a = new Thread(()->...原创 2019-07-04 00:38:46 · 394 阅读 · 0 评论 -
java 8 Stream并行流与Spliterator关系
java 8并行流使用当个线程计算1+2+3+...+1000=?,java 8代码为:public class DemoTest { public static void main(String[] args) { IntStream strem = IntStream.rangeClosed(1, 1000); int sum = strem.sum(); System.ou...原创 2019-05-25 18:04:04 · 1096 阅读 · 0 评论 -
jdk7中fork/join框架
并行计算分支/合并框架的目的是以递归方式将可以并行的任务拆分成更小的任务,然后将每个子任务的结果合并起来生成整体结果。大概步骤如下任务拆分fork线程自动拿去任务,处理执行compute方法规约处理结果join举例说明打印10次结果public class PrintTest { /** * <p>Title: main</p> * <...原创 2019-05-25 15:38:54 · 476 阅读 · 0 评论 -
几个好例子看懂CountDownLatch、CyclicBarrier、Semaphore
目录CountDownLatchCyclicBarrier基本例子指定线程优先指定线程优先Semaphore好的例子胜过语言描述,注意观察测试结果,对于理解特别重要CountDownLatch例子/** * @CountDownLatch * 阻塞某一个线程的对象,直到计数器为0 * * @author it */public class CountDownLatch...原创 2019-01-22 00:51:22 · 171 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
原文出处:http://www.cnblogs.com/dolphin0520/p/3920373.htmlJava并发编程:volatile关键字解析volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字...转载 2018-03-06 21:22:33 · 181 阅读 · 0 评论 -
传统定时器技术入门-java 类Timer
类 Timer一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。 新建需要调度的任务import java.util.Date;import java.util.TimerTask;public class MyTask extends TimerTask { @Override public void run() { System原创 2017-12-09 18:03:09 · 1044 阅读 · 0 评论 -
分析Java线程池32位保存两个数据信息设计 (ThreadPoolExecutor 三)
代码演示 private static final int COUNT_BITS = Integer.SIZE - 3; private static final int CAPACITY = (1 << COUNT_BITS) - 1; // runState 用3位高字节保存多线程状态 private static final int RUNNING...原创 2019-08-31 12:49:44 · 255 阅读 · 0 评论