
Java并发
哈喽我的天啊
java web软件工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java多线程Lock Condition生产消费者
直接看代码吧,log写的很清楚了,重点是在Queue.java类 Consumer用来消费 package com.zhuyang.concurrency.lock.notify; import java.util.List; public class Consumer implements Runnable { private Queue queue; public Consum原创 2016-12-12 00:46:13 · 415 阅读 · 0 评论 -
java Atomic分析
JAVA在java.util.concurrent中提供了对原子操作的包,用来实现一些原子操作。 package com.zhuyang.concurrency.atomic; import java.util.concurrent.atomic.AtomicInteger; public class AtomicIntegerTest extends Thread { private s原创 2016-12-18 21:55:32 · 403 阅读 · 0 评论 -
ThreadLocal使用
Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量。 package com.zhuyang.concurrency.threadlocal; import java.util.HashMap; import java.util.M原创 2016-12-18 22:08:25 · 363 阅读 · 0 评论 -
ThreadPool使用
为什么要用线程池: 1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。 2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,线程开的越多,消耗的内存也就越大,最后死机)。 Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorSer原创 2016-12-18 22:20:56 · 557 阅读 · 0 评论 -
Callable & Future
我们知道创建一个线程可以通过实现Runnable接口和继承Thread类,并重写run方法。但是run方法是不带返回的。 而Callable接口同样是用于多线程,并能返回一个Future ExecutorService exe = Executors.newFixedThreadPool(2); Future future =exe.submit(new Callable() {//sub原创 2016-12-18 22:36:37 · 318 阅读 · 0 评论 -
CompletionService使用
前面说到Callable和Future。 每一个Callable都会返回一个Future. 但是如果ExecutorService启动了多个callable,那么我们就需要处理多个Future,这个时候就应该用到CompletionService ExecutorService exe2 = Executors.newFixedThreadPool(10); CompletionServi原创 2016-12-18 22:41:21 · 613 阅读 · 0 评论