07 2019 档案

摘要:本文主要内容 1. 什么是线程池 2. 线程池实现原理 3. 线程池中常见的各种队列 4. 自定义线程创建的工厂 5. 常见的饱和策略 6. 自定义饱和策略 7. 线程池中两种关闭方法有何不同 8. 扩展线程池 9. 合理地配置线程池 10. 线程池中线程数量的配置 阅读全文
posted @ 2019-07-29 08:59 路人甲Java 阅读(2699) 评论(5) 推荐(6) 编辑
摘要:1. 第1天:必须知道的几个概念 2. 第2天:并发级别 3. 第3天:有关并行的两个重要定律 4. 第4天:JMM相关的一些概念 5. 第5天:深入理解进程和线程 6. 第6天:线程的基本操作 7. 第7天:volatile与Java内存模型 8. 第8天:线程组 9. 第9天:用户线程和守护线程 阅读全文
posted @ 2019-07-26 09:32 路人甲Java 阅读(3422) 评论(3) 推荐(2) 编辑
摘要:这是java高并发系列第17篇。 本文主要内容: 1. 介绍CyclicBarrier 2. 6个示例介绍CyclicBarrier的使用 3. 对比CyclicBarrier和CountDownLatch CyclicBarrier简介 CyclicBarrier通常称为循环屏障。它和CountD 阅读全文
posted @ 2019-07-25 09:20 路人甲Java 阅读(791) 评论(0) 推荐(2) 编辑
摘要:这是java高并发系列第16篇文章。 本篇内容 1. 介绍CountDownLatch及使用场景 2. 提供几个示例介绍CountDownLatch的使用 3. 手写一个并行处理任务的工具类 假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一 阅读全文
posted @ 2019-07-22 15:08 路人甲Java 阅读(829) 评论(0) 推荐(1) 编辑
摘要:这是java高并发系列第15篇文章 Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能允许一个线程访问一个资源,而信号量可以控制有多少个线程可以 同时访问 特定的资源。 Semaphor 阅读全文
posted @ 2019-07-22 09:02 路人甲Java 阅读(1373) 评论(0) 推荐(1) 编辑
摘要:这是java高并发系列第14篇文章。 本文主要内容: 1. 讲解3种让线程等待和唤醒的方法,每种方法配合具体的示例 2. 介绍LockSupport主要用法 3. 对比3种方式,了解他们之间的区别 LockSupport 位于 java.util.concurrent ( 简称juc )包中,算是j 阅读全文
posted @ 2019-07-20 17:17 路人甲Java 阅读(924) 评论(1) 推荐(2) 编辑
摘要:本文目标: 1. synchronized中实现线程等待和唤醒 2. Condition简介及常用方法介绍及相关示例 3. 使用Condition实现生产者消费者 4. 使用Condition实现同步阻塞队列 Object对象中的wait(),notify()方法,用于线程等待和唤醒等待中的线程,大 阅读全文
posted @ 2019-07-20 17:14 路人甲Java 阅读(863) 评论(0) 推荐(1) 编辑
摘要:java高并发系列 第12天JUC:ReentrantLock重入锁 本篇文章开始将juc中常用的一些类,估计会有十来篇。 synchronized的局限性 synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由jvm实现,用户不需要显示 阅读全文
posted @ 2019-07-17 19:17 路人甲Java 阅读(1169) 评论(4) 推荐(7) 编辑
摘要:java高并发系列第11篇文章。 本文主要探讨一下中断线程的几种方式。 通过一个变量控制线程中断 代码: 代码中启动了一个线程,线程的run方法中有个死循环,内部通过exit变量的值来控制是否退出。 让主线程休眠3秒,此处为什么使用TimeUnit?TimeUnit使用更方便一些,能够很清晰的控制休 阅读全文
posted @ 2019-07-17 09:55 路人甲Java 阅读(576) 评论(0) 推荐(1) 编辑
摘要:这是并发系列第10篇文章。 什么是线程安全? 当多个线程去访问同一个类(对象或方法)的时候,该类都能表现出正常的行为(与自己预想的结果一致),那我们就可以所这个类是线程安全的。 看一段代码: 分析上面代码: 1. 线程t1、t2、t3中调用的方法都需要获取d1的锁,所以他们是互斥的 2. t1/t2 阅读全文
posted @ 2019-07-17 09:45 路人甲Java 阅读(533) 评论(0) 推荐(3) 编辑
摘要:守护线程 是一种特殊的线程,在后台默默地完成一些系统性的服务,比如 垃圾回收线程 、 JIT线程 都是 守护线程 。与之对应的是 用户线程 ,用户线程可以理解为是系统的工作线程,它会完成这个程序需要完成的业务操作。如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了。 所以 阅读全文
posted @ 2019-07-15 17:48 路人甲Java 阅读(627) 评论(0) 推荐(1) 编辑
摘要:线程组 我们可以把线程归属到某个线程组中,线程组可以包含多个 线程 以及 线程组 ,线程和线程组组成了父子关系,是个树形结构,如下图: 使用线程组可以方便管理线程,线程组提供了一些方法方便方便我们管理线程。 创建线程关联线程组 创建线程的时候,可以给线程指定一个线程组,代码如下: 输出结果: act 阅读全文
posted @ 2019-07-15 17:46 路人甲Java 阅读(411) 评论(0) 推荐(1) 编辑
摘要:运行上面代码,会发现程序无法终止。 线程t1的run()方法中有个循环,通过flag来控制循环是否结束,主线程中休眠了1秒,将flag置为false,按说此时线程t1会检测到flag为false,打印“线程t1停止了”,为何和我们期望的结果不一样呢?运行上面的代码我们可以判断,t1中看到的flag一 阅读全文
posted @ 2019-07-15 17:44 路人甲Java 阅读(478) 评论(0) 推荐(1) 编辑
摘要:新建线程 新建线程很简单。只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可。 那么线程start()之后,会干什么呢?线程有个run()方法,start()会创建一个新的线程并让这个线程执行run()方法。 这里需要注意,下面代码也能通过编译,也能正常执行。但是,却不能 阅读全文
posted @ 2019-07-15 17:38 路人甲Java 阅读(841) 评论(0) 推荐(2) 编辑
摘要:进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。 进程具有的特征: 动态性 :进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的 并发性 : 阅读全文
posted @ 2019-07-15 17:35 路人甲Java 阅读(538) 评论(0) 推荐(0) 编辑
摘要:JMM(java内存模型),由于并发程序要比串行程序复杂很多,其中一个重要原因是并发程序中数据访问 一致性 和 安全性 将会受到严重挑战。 如何保证一个线程可以看到正确的数据呢? 这个问题看起来很白痴。对于串行程序来说,根本就是小菜一碟,如果你读取一个变量,这个变量的值是1,那么你读取到的一定是1, 阅读全文
posted @ 2019-07-15 17:24 路人甲Java 阅读(406) 评论(0) 推荐(1) 编辑
摘要:有关为什么要使用并行程序的问题前面已经进行了简单的探讨。总的来说,最重要的应该是处于两个目的。 第一,为了获得更好的性能; 第二,由于业务模型的需要,确实需要多个执行实体。 在这里,我将更加关注第一种情况,也就是有关性能的问题。将串行程序改造为并发程序,一般来说可以提高程序的整体性能,但是究竟能提高 阅读全文
posted @ 2019-07-15 17:22 路人甲Java 阅读(778) 评论(1) 推荐(1) 编辑
摘要:由于临界区的存在,多线程之间的并发必须受到控制。根据控制并发的策略,我们可以把并发的级别分为 阻塞 、 无饥饿 、 无障碍 、 无锁 、 无等待 几种。 阻塞 一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继续执行。当我们使用synchronized关键字或者重入锁时,我们得到的就是阻塞 阅读全文
posted @ 2019-07-15 17:19 路人甲Java 阅读(862) 评论(1) 推荐(2) 编辑
摘要:java高并发系列 第1天:必须知道的几个概念 同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用, 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为 。 异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以 阅读全文
posted @ 2019-07-14 20:51 路人甲Java 阅读(1438) 评论(1) 推荐(2) 编辑