
多线程
csdn_kenneth
这个作者很懒,什么都没留下…
展开
-
多线程
学习多线程啦。先找几篇博客吧https://www.cnblogs.com/GarfieldEr007/p/5746362.html转载 2018-03-20 16:59:32 · 184 阅读 · 0 评论 -
ThreadLocal-
简单使用示例https://www.cnblogs.com/codechange/p/8652352.html面试必问深度解析https://www.jianshu.com/p/98b68c97df9b一针见血理解ThreadLocal类http://www.threadworld.cn/archives/66.html 使用注意--使用前和使用后要removeht...转载 2018-10-30 12:13:54 · 390 阅读 · 1 评论 -
多线程(九)--Master-Worker模式
补图https://www.cnblogs.com/code-java/p/6901439.html原创 2018-09-30 16:03:22 · 168 阅读 · 0 评论 -
多线程(八)--future模式
Future模式有点类似于商品订单。比如在网购时,当看中某件商品,就可以提交订单,当订单处理完成之后,在家里等待商品送货上门即可。或者说更形象的我们发送Ajax请求的时候,页面是异步的进行后台处理,用户无须一直等待请求的结果,可以继续浏览或操作其他内容。补图。 https://www.jianshu.com/p/444cbe1691be ...原创 2018-09-30 14:23:06 · 221 阅读 · 0 评论 -
多线程(十四)--锁
一、ReentrantLock(重入锁)1.1 Lock使用import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class UseReentrantLock { private Lock lock = new Reen...原创 2018-10-06 16:37:12 · 365 阅读 · 0 评论 -
多线程(十三)--Concurent.util常用类
一、CountDownLatchimport java.util.concurrent.CountDownLatch;public class UseCountDownLatch { public static void main(String[] args) { final CountDownLatch latch = new CountDo...原创 2018-10-05 22:36:32 · 287 阅读 · 0 评论 -
多线程(十二)--线程池--自定义线程池
1.有界队列的使用public class MyTask implements Runnable { private int taskId; private String taskName; public MyTask(int taskId, String taskName) { this.taskId = taskId; ...原创 2018-10-05 16:34:41 · 290 阅读 · 0 评论 -
多线程(十一)--线程池--创建线程池的四种方式
newFixedThreadPool解析核心线程数据和最大线程数相同。比如,参数传进来10。那么在线程池被创建的时候,就会创建10个线程。空闲时间是0毫秒。其实这里不存在空闲时间一说。因为10个线程会一直存在,而不被回收。如果10个线程都在执行任务,再有任务提交的时候,就把任务加到无界队列。 newSingleThreadExecutor解析和newFixed...原创 2018-10-05 14:29:03 · 286 阅读 · 0 评论 -
多线程(十)--生产者-消费者
public class Data { private String id; private String name; public Data(String id, String name) { this.id = id; this.name = name; } public String getId(...原创 2018-10-05 13:48:05 · 159 阅读 · 0 评论 -
多线程(七)--并发Queue
在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。一、ConcurrentLinkedQueue是一个适用于高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于BlockingQueue。...原创 2018-09-20 14:58:41 · 221 阅读 · 0 评论 -
多线程(六)--同步类容器和并发类容器
一、同步类容器如古老的Vector、HashTable。这些容器的同步功能其实都是有JDK的Collections.synchronized**等工厂方法去创建的。其底层的机制无非就是用传统的synchronized关键字对每个公用的方法都进行同步,使得每次只能有一个线程访问容器的状态。这很明显不满足我们今天互联网时代高并发的需求,在保证线程安全的同时,也必须要有足够好的性能。二、并发类容...原创 2018-09-20 12:33:16 · 206 阅读 · 0 评论 -
多线程(五)--单例和多线程
1.ThreadLocal的示例public class ConnThreadLocal { public static ThreadLocal<String> th = new ThreadLocal<>(); public static void setTh(String value) { th.set(value); } public stati...原创 2018-09-20 11:33:47 · 156 阅读 · 0 评论 -
多线程(四)--wait/notify模拟queue
public class MyQueue { //1.需要一个承装元素的集合 private final LinkedList<Object> list = new LinkedList<>(); //2.需要一个计数器 private AtomicInteger count = new AtomicInteger(0); //3.需要指定上限和下限 p...原创 2018-09-19 17:19:22 · 134 阅读 · 0 评论 -
多线程(三)--线程之间通信
1.wait和notify必须配合synchronized关键字使用2.wait方法释放锁,notify方法不释放锁例一:public class ListAdd1 { private volatile static List list = new ArrayList(); public void add() { list.add("hello"); } public...原创 2018-09-19 15:13:57 · 823 阅读 · 1 评论 -
多线程(二)--volatile
volatile关键字的主要作用是使变量在多个线程间可见。jdk1.5之后,每个线程执行的时候线程工作空间会持有主内存的一个数据拷贝。运行的过程中,直接用线程工作空间的拷贝值。1.可见性的证明没加volatilepublic class RunThread extends Thread { private boolean isRunning = true; private ...原创 2018-09-19 11:25:17 · 220 阅读 · 0 评论 -
多线程(一)--synchronized
1.2 线程安全线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。激烈的锁竞争会导致cpu使用率飙升,表现为应用访问慢,或者系统宕机。所以,多线程编程要注意锁竞争的发生。1.3 多个对象多个锁关键字synchronized取得的锁都是对象锁,而不是把一段代码(方法)当做锁,所以,示例代码中那个线程先执行syn...原创 2018-09-18 16:25:48 · 300 阅读 · 0 评论 -
模拟 CAS 算法
/* * 模拟 CAS 算法 */public class TestCompareAndSwap { public static void main(String[] args) { final CompareAndSwap cas = new CompareAndSwap(); for (int i = 0; i < 10; i++) { new...原创 2018-07-23 08:13:05 · 138 阅读 · 0 评论 -
CUP核心数和线程数概念
https://blog.csdn.net/wxqian25/article/details/19476363转载 2018-12-11 19:23:06 · 1228 阅读 · 0 评论