java并发编程
文章平均质量分 81
DreamTech1113
时刻保持学习状态
展开
-
Java并发编程-闭锁CountDownLatch
引入《java并发编程实战》里面一段话。 闭锁是一种同步工具,可以延迟线程的进度直到其到达最终状态,闭锁相当于一扇门,在闭锁到达结束状态之前,这扇门一直是关着的,并且没有任何线程能够通过,当到达结束状态的时候,这扇门会打开并且允许所有的线程通过。当闭锁到达结束状态后,将不会再改变状态,这扇门将永远保持打开的状态。 纯看这段不难理解,看一下怎么实现的。CountDownLatch...原创 2018-05-13 11:52:51 · 179 阅读 · 0 评论 -
Java并发编程-信号量Semaphore
Semaphore是一个计数信号量,与concurrent.locks或者synchronized锁相比(任意时刻只允许一个线程访问某个特定的资源),它可以控制同时访问特定资源的线程数量。可以将Semaphore理解为许可证的集合,实际上没有使用任何许可证对象。创建Semaphore时需要指定许可证数目,即由此来限制同时执行的线程数量。调用acquire()方法是从Semaphore中获取...原创 2019-03-27 09:34:18 · 160 阅读 · 0 评论 -
Java并发编程----线程池技术(二)
目录线程的创建与销毁管理队列任务线程工厂饱和策略线程池配置及执行流程 Java类库中提供的线程池创建方式常见有四种,通过调用Executors类中的静态方法可以实现不同策略的线程池技术,其中newFixedThreadPool,newCachedThreadPool,newSingleThreadExecutor是通过访问ThreadPoolExecutor构造函数实...原创 2019-02-28 16:59:18 · 238 阅读 · 0 评论 -
Java并发编程----线程池技术(一)
目录串行执行任务一任务一线程固定线程数量Executor框架类库中的线程池返回任务结果的Callable与Future---------------------------------笔记来自于《Java并发编程实战》串行执行任务 以客户端请求服务器为例,同一个时期有多个客户端请求服务器时,单线程中一次只能处理一个客户端的请求,当客户向一个已经被其他客户端...原创 2019-02-24 13:30:37 · 269 阅读 · 0 评论 -
Java并发编程-Callable与Future
常见的实现多线程的方式有两种,1.继承Thread类,2.实现Runnable接口,这两种实现方式无法得到线程执行的结果.所以如果想要得到线程执行最终的结果,就可以使用Callable接口与Future接口.CallableCallable与Runnable两者都是接口,功能基本上相似的.都是是个任务类.先看Runnable接口,接口里面仅有一个方法.可以看到run()方法的返回值是v...原创 2018-06-06 13:14:13 · 196 阅读 · 0 评论 -
Java并发编程-synchronized关键字
概念synchronized关键字是java内置的特性,是互斥锁的一种实现方式.同一时间只能有一个线程获取到锁.例如线程A请求已经被线程B获取到的锁时,会处于等待状态,直到线程B执行完同步代码,释放锁,线程A才能获取锁,如果线程B由于IO或者其他原因发生阻塞,线程B会一直处于等待获取锁的状态,没有中断线程等待状态的方法.也就是说synchronized做到了两点,原子性和可见性.(1)原子性:表示...原创 2018-06-14 14:37:48 · 296 阅读 · 0 评论 -
Java并发编程-synchronzied和lock
线程安全是并发编程必须要关注的问题.多个线程同时访问共享资源,就会出现共享资源被修改情况,其他线程无法接受到修改后的结果,导致错误的运行结果.比如共享变量,共享文件的写操作等等.锁机制保证了一个共享数据同时只能被一个线程操作,其他线程只能等待当前线程释放锁,然后再获取锁,进而操作或者访问共享数据.在JDK1.5之前都是使用synchronzied和volatile关键字来实现共享对象访问机制,...原创 2018-06-12 14:46:00 · 283 阅读 · 0 评论 -
Java并发编程-多线程实现Runnable和Thread比较
实现多线程基础的两种方式有:1.继承Thread类,2.实现Runnable接口。这两种方式一般都是适用于线程数量较少的情况,由于线程的创建和销毁会降低程序性能,所以当线程数量较多情况,建议使用线程池。介绍实现多线程基础方式。方式一:实现Runnable接口。Runnable接口中只有一个方法Run()方法。public interface Runnable { public...原创 2018-05-25 23:08:53 · 765 阅读 · 0 评论 -
Java并发编程-栅栏CyclicBarrier
栅栏功能是阻塞一组线程直到某个事件的发生,当参与的线程达到栅栏位置的时候,将会调用await()方法,这将会阻塞当前线程直到所有的线程全部到达了栅栏。如果所有的线程都到达了栅栏,那么栅栏便会打开,此时所有的线程都会释放,而栅栏将被重置以便下次使用。 CyclicBarrier有两个构造参数,如下。CyclicBarrier(int parties) CyclicBarri...原创 2018-05-13 18:40:56 · 247 阅读 · 0 评论 -
Java并发编程-Exchange
1.简介 Exchange位于java.util.concurrent包下面,主要是用于线程之间数据交换的工具类,经常用于管道设计和遗传算法中。Exchange提供了一个同步点,在这个同步点上,线程完成配对并进行数据的交换。第一个线程调用exchange()方法时传入对象,它会一直等待,直到第二个对象调用exchange()方法时,每个线程的exchange()方法将返回并...原创 2019-03-28 10:37:27 · 599 阅读 · 0 评论