java并发
小希子丶
争取做一个良心java博主。
展开
-
初识ThreadPoolExecutor(二)——源码简单解读
二、ThreadPoolExecutor源码简单解读1.execute方法 execute方法继承字Executor,是线程池的核心方法,公共入口,用于将一个任务提交至线程池,并为其安排处理方式。 public void execute(Runnable command) { if (command == null) throw new NullPoint原创 2017-05-20 19:04:28 · 210 阅读 · 0 评论 -
初识ThreadPoolExecutor(一)——构造器
一、构造器根据需求的不同,我们可以选择使用不同的构造器构造ThreadPoolExecutor。这里,将介绍最全面的构造器及其各个参数的意义。public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long原创 2017-05-20 19:03:12 · 325 阅读 · 0 评论 -
怎么理解JAVA线程的中断
1.中断状态是什么?每个线程都有一个boolean类型的中断状态,当中断线程时,这个线程的中断状态将被设置成true。但是,这并不意为着线程将会马上终止–中断操作并不会真正的中断一个正在运行的线程,而只是发出中断请求,然后线程在下一个合适的时刻中断自己(取消点)。2.boolean interrupt() 请求中断interrupt()方法会将调用该方法的线程的中断状态设置为true。如果线程在调用原创 2017-05-20 19:02:31 · 403 阅读 · 0 评论 -
简单使用BlockingQueue(阻塞队列)
由于BlockingQueue很适合于构建 “生产者-消费者” 模型,所以此处我打算对该行为进行模拟–生产者每100毫秒生成一个商品,而消费者每50毫秒消费一个商品,并将put,take等操作的日志信息打印到控制台,来简单的体验一下BlockingQueue。2.Product类public class Product extends Thread{ private Blocki原创 2017-05-20 19:01:19 · 238 阅读 · 0 评论 -
简单使用CyclicBarrier(栏栅)
使用CyclicBarrier类模拟赛跑功能:新建N个人选手,当所有选手准备好时,开始前进一次,每次前进的距离随机在1-3之间,所有选手前进一次后,裁判开始检查有没有到达终点的选手,没有则继续之前操作,直到有一人或多人同时到达终点。2.Person类public class Person extends Thread{ private final String name;原创 2017-05-20 19:00:48 · 269 阅读 · 0 评论 -
简单使用CountDownLatch(闭锁)
1.CountTest类实现Callable接口,用来并发的自增一个数值public class CountTest implements Callable<Integer>{ private CountDownLatch adl; public CountTest(CountDownLatch adl) { this.adl = adl; } @Ove原创 2017-05-20 18:59:56 · 1446 阅读 · 0 评论 -
synchronized 与 volatile的区别以及用处
1.synchronized关键字用于方法及代码块,而volatile关键词用于修饰变量。 2.在多线程环境下运行时,volatile修饰的变量将不会在线程堆区进行缓存,而是直接写入到‘主存’,所有对volatile修饰变量的修改,都将直接修改“主存”中的值。所以volatile关键字能保证数据的一致性,但却不能解决并发所带来的竞态竞争等问题。 3.synchronized关键字将...原创 2017-05-20 18:55:58 · 513 阅读 · 0 评论