
多线程
wanghaitao4j
创造价值,为人类社会做贡献。
展开
-
Java多线程和并发库
看了张孝祥老师的视频,准备总结下Java的多线程和并发库的知识,因为Java有更新,打算看完新版本的Java之后再出个专栏。留此博客,提醒自己有时间写专栏。(其实是想在1024时水个文章)Java多线程和并发库-专栏地址...原创 2018-10-24 23:25:15 · 1167 阅读 · 0 评论 -
多线程(1)传统线程回顾
本文介绍的传统线程的回顾是Java1.5之前回顾,你可以选择跳过。Thread类即线程类一线程的创建 1.1通过new Thread写出子类重写run方法Thread thread = new Thread(){ public void run(){System.out.println("")};}; thread.start();即可运行thread里面的...原创 2018-11-07 15:04:55 · 207 阅读 · 0 评论 -
多线程(2)-ThreadLocal线程范围内的共享数据
本文主要介绍下ThreadLocal,重要的概念是线程范围内的数据共享线程之间的数据不相互干扰,int data = 0;A线程取A线程的数据data,B线程取B线程的数据data。怎样才能使上例子完成?我们直接上例子吧public class ThreadScopeShareData { private static int data = 0; private static Ma...原创 2018-11-07 16:07:34 · 2815 阅读 · 0 评论 -
多线程(3)-多线程访问共享对象和数据的方式
在多线程(2)-ThreadLocal,我们讨论了线程范围内的数据共享,本篇文章我们讨论线程之间即多线程访问共享对象和数据的方式一:Java5之前给共享数据加上锁synchronized,上代码public class MultiThreadShareData { public static void main(String[] args) { ShareData1 data2...原创 2018-11-07 17:49:37 · 1194 阅读 · 0 评论 -
多线程(4)-线程池
Java5之后提供了线程池ThreadPool,concurrent包下的Executors提供了很多创建线程池的方法,根据不同需要,分开使用。包括但不限于newFixedThreadPool固定大小的线程池,newCachedThreadPool缓存线程池(根据线程多少创建线程数),newSingleThreadExecutor单线程(保证有一个线程),newScheduledThrea...原创 2018-11-07 18:33:06 · 154 阅读 · 0 评论 -
多线程(5)-线程锁的技术
本文主要介绍LocksLock比synchronized更加面向对象,对比synchronized我们直接上代码Lock lock = new ReentrantLock(); public void output(String name){ int len = name.length(); lock.lock(); try{ for(int i=0;i&l...原创 2018-11-07 23:02:56 · 290 阅读 · 0 评论 -
多线程(6)-同步工具Semaphere,CyclicBarrier,CountDownLatch,Exchanger
多线程的同步工具Semaphere,CyclicBarrier,CountDownLatch,Exchanger的使用介绍Semaphere信号灯new Semaphere(3)创建出来就是三盏灯的意思,线程只要拿到许可就可以执行,执行完可以释放灯;上代码public class SemaphoreTest { public static void main(String[] ...原创 2018-11-08 00:20:35 · 281 阅读 · 0 评论 -
多线程(7)-阻塞队列
本文主要说下阻塞队列BlockQueue队列是先进先出的,创建时可以固定大小,也可以不固定。BlockQueue有很多实现,这里简单介绍ArrayBlockingQueue;在增加时阻塞,和删除时为空,查看帮助文档put() 阻塞住直到然后放入,take()offer()返回false,poll()返回nulladd()抛异常 ,remove()抛异常上代码pub...原创 2018-11-08 01:10:27 · 280 阅读 · 1 评论 -
多线程(8)-Concurrent包下的Collection
大家知道hashset和hashmap等是线程不安全的。java1.5之前使用的是synchronized如Collection.synchronizedMap(),这就是使用代理,在使用方法真正的方法之前用synchronized锁住方法就同步了,Java1.5之后concurrent包下提供了特殊的Collection,包括ConcurrentHashMap,ConcurrentSki...原创 2018-11-08 01:34:19 · 321 阅读 · 2 评论