随笔分类 -  并发编程

threads
摘要:并发编程分类一览 一、多线程的使用及意义 1. 进程与线程,并发与并行的区别 2. Java中线程的使用 thread、runable、callable/future、Executors.newSingleThreadExecutor; 3. 线程的生命周期 启动、运行、终止、等待、超时等待、阻塞 阅读全文
posted @ 2019-09-15 22:15 BigShen 阅读(142) 评论(0) 推荐(0)
摘要:一、线程池基本使用 在Java 中,如果每个请求到达就创建一个新线程, 创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或切换过度而导致系统资源不足。为了解决这个问题就有了线程池 阅读全文
posted @ 2019-07-14 19:07 BigShen 阅读(167) 评论(0) 推荐(0)
摘要:一、CHM的使用 ConcurrentHashMap是 J .U.C 包里面提供的一个线程安全并且高效的 HashMap ,所以 ConcurrentHashMap 在并发编程的场景中使用的频率比较高。 ConcurrentHashMap也是Map的派生类,所以 api 基本和 Hashmap 类似 阅读全文
posted @ 2019-07-13 22:31 BigShen 阅读(331) 评论(0) 推荐(0)
摘要:有了之前JUC中Lock、AQS同步队列、Condition线程通信、Condition等待队列的基础,我们可以继续研究JUC包中如BlockingQueue、CountDownLatch、Semaphore、CyclicBarrier等并发工具,这些并发工具其实都是在重入锁、Condition基础 阅读全文
posted @ 2019-07-12 23:13 BigShen 阅读(224) 评论(0) 推荐(0)
摘要:一、线程通信 Condition 在使用synchronized时,我们结合wait、notify、notifyAll可以实现线程的通信,其中wait方法会阻塞当前线程并释放锁,notify/notifyAll会唤醒等待锁的线程并抢占锁。JUC中也为我们提供了一个多线程协调通信的工具类Conditi 阅读全文
posted @ 2019-07-11 19:50 BigShen 阅读(220) 评论(0) 推荐(0)
摘要:JUC(java.util.concurrent)是在并发编程中常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并发包的作者是大名鼎鼎的Doug Lea。 /* * ... * @since 1.5 * @author Doug Lea */ 阅读全文
posted @ 2019-07-10 21:37 BigShen 阅读(191) 评论(0) 推荐(0)
摘要:一、死锁 1. 死锁、活锁 **死锁:**一组互相竞争资源的线程因互相等待,导致'永久'阻塞的现象。 **活锁:**活锁指的是任务或执行者没有被阻塞,由于某些条件没有满足导致一直重复尝试-失败-尝试-失败的过程。处于活锁的实体是在不断改变状态,有可能被解开。可以看做一个线程需要N把锁,当获取到第一把 阅读全文
posted @ 2019-07-09 21:47 BigShen 阅读(280) 评论(0) 推荐(0)
摘要:一、一段代码引发的思考 首选,看下面这段代码会输出什么结果? import java.util.concurrent.TimeUnit; public class VolatileTest { // private static volatile Boolean stop = false; priv 阅读全文
posted @ 2019-07-08 14:16 BigShen 阅读(307) 评论(0) 推荐(0)
摘要:一、线程的安全 线程的合理使用能够很好的提高程序的处理性能,第一个是利用多核CPU多线程来实现线程的并行操作,第二个是线程的异步化执行相比于同步执行来说,异步化执行能够很好地优化程序的处理性能提升并发吞吐量。 同时也带来了一些麻烦,以下面简单的例子来说。 1. 一个问题来讨论线程安全性问题 样例:启 阅读全文
posted @ 2019-07-07 20:41 BigShen 阅读(131) 评论(0) 推荐(0)
摘要:一、相关概念 1. 影响服务器吞吐量的因素 硬件方面:CPU、内存、磁盘、网络 软件层面:硬件资源是前提,软件层面的配置是为了最大化的利用硬件资源,如配置 线程数量、JVM内存分配大小、网络通信机制(BIO/NIO/AIO)、磁盘IO 从计算机本身的角度来考虑的话,一个请求的访问到处理最终到返回,性 阅读全文
posted @ 2019-07-06 19:28 BigShen 阅读(491) 评论(0) 推荐(0)