多线程与并发实践
Somhu
biu...biu...biu...
展开
-
并发编程工具之九:AtomicInteger (CAS)
参考《实战java高并发程序设计》一书…原创 2017-12-25 17:24:19 · 286 阅读 · 0 评论 -
并发编程工具之八:Fock/Join
待完成…原创 2017-12-25 15:40:51 · 512 阅读 · 0 评论 -
并发编程工具之七:LockSupport(线程阻塞工具类)
待完成…原创 2017-12-25 10:52:41 · 323 阅读 · 0 评论 -
并发编程工具之六:ReadWriteLock
待完成…原创 2017-12-25 10:51:28 · 253 阅读 · 1 评论 -
模拟死锁 java
直接上代码吧:package com.sanhu.utils;public class DeckLockTest implements Runnable{ private int flag; /** * 这里必须使用static关键字进行修饰,来保证这两个对象对DeckLockTest的所有实例是共享的 * 如果不使用static修饰,不会产生死锁现象原创 2017-12-15 09:52:12 · 286 阅读 · 0 评论 -
并发编程工具之三:Semaphore 用法及源码分析
转载出处:http://www.cnblogs.com/nullzx/1. 信号量Semaphore的介绍我们以一个停车场运作为例来说明信号量的作用。假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了三辆车,看门人允许其中它们进入进入,然后放下车拦。以后来的车必须在入口等待,直到停车场中有车辆离开。这时,如果有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开一辆,则又可以转载 2017-11-23 16:11:02 · 272 阅读 · 0 评论 -
重入锁:ReentrantLock 详解
在JDK5.0版本之前,重入锁的性能远远好于synchronized关键字,JDK6.0版本之后synchronized得到了大量的优化,二者性能也部分伯仲,但是重入锁是可以完全替代synchronized关键字的。除此之外,重入锁又自带一系列高逼格UBFF:可中断响应、锁申请等待限时、公平锁。另外可以结合Condition来使用,使其更是逼格满满。先来盘花生米:package somhu;impo原创 2017-12-22 16:29:35 · 30236 阅读 · 8 评论 -
并发编程工具之五:Future和Callable 使用
转载自:https://www.cnblogs.com/fengsehng/p/6048609.html感谢这位朋友的无私奉献Callable和Future出现的原因创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样转载 2017-11-23 19:40:16 · 459 阅读 · 0 评论 -
并发编程工具之四:Exchanger 使用
Exchanger 使用Exchanger(java.util.concurrent包的类),从名字上理解就是交换。它用于在两个线程之间进行交换数据。线程会阻塞在Exchanger的exchange方法上,知道另一个线程也到了同一个Exchanger的exchange方法时,二者进行交换,然后两个线程会继续执行自身相关的代码。 如上图,无论谁先到达exchanger.exchange,都会等待另一原创 2017-11-23 18:41:44 · 272 阅读 · 0 评论 -
并发编程工具之二:CyclicBarrier 用法
CyclicBarrier 用法从字面上这个类可以理解为环形屏障,它可以协同多个线程,让多个线程在这个屏障前等待。当所有线程都达到这个屏障时,再一起执行后续的动作。如下图: 三个线程各有一个barrier.await,那么任何一个线程执行到barrier.await时就会进入阻塞状态进行等待,知道三个线程都达到了barrier.await才会同时从await返回,就需后续的工作。此外,如果在构造C原创 2017-11-23 15:40:38 · 405 阅读 · 0 评论 -
并发编程工具之一:CountDownLatch 用法
CountDownLatch 用法CountDownLatch是java.util.concurrent包中一个类,CountDownLatch只要提供的机制是多个(具体数量等于初始化CountDownLatch时count的值)线程都达到了预期状态或者完成了预期工作时触发事件,其他线程可以等待这个事件来触发自己后续的工作。等待的线程可以是多个,即CountDownLatch可以唤醒多个等待的线程。原创 2017-11-23 14:51:41 · 13054 阅读 · 2 评论 -
java NIO 知识点汇总
一、概述java NIO 开始于JDK1.4,其核心元件有:Channel、Buffer、Selector。 Channel可以理解为标准IO中流,数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。Channel主要实现:FileChannel、SocketChannel、ServerSocketChannel、DatagramChannel。Buffer主要转载 2017-11-29 11:56:52 · 527 阅读 · 0 评论 -
ThreadPoolExecutor 线程添加策略
maximumPoolSize = corePoolSize + 非核心线程数1、线程数量未达到corePoolSize,则新建一个线程(核心线程)执行任务2、线程数量达到了corePools,则将任务移入队列等待3、队列已满,新建线程(非核心线程)执行任务4、队列已满,总线程数又达到了maximumPoolSize,执行决绝策略...原创 2018-11-04 22:17:11 · 439 阅读 · 0 评论