并发编程
文章平均质量分 78
kk_lina
这个作者很懒,什么都没留下…
展开
-
七、线程并发高级部分之JDK7新增的Fork/Join
化繁为简,分而治之。利用递归的分解和合并,直到任务小到可以接受的程度。 1. Future任务机制和FutureTask Future类对具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。 boolean cancel(boolean mayInterruptIfRunning):取消任务,参数表示是否允许取消正在执行却没有执行完毕的任务。 boolean isCancelled() :任务是否取消成功,如果在完成之前取消则为true。 boolean isDone(原创 2021-12-29 18:04:30 · 750 阅读 · 0 评论 -
六、线程并发高级部分之线程池
1. 单线程线程池 newSingleThreadExecutor 线程池只有一个线程在工作,单线程串行执行所有任务,如果异常,按照提交顺序选择新线程继续执行。 2. 可缓存的线程池 newCachedThreadPool 调用execute将重用以前构造的线程,线程不可用才创建新线程,60s未使用会被移除。 3. 固定大小的线程池 newFixedThreadPool 可以指定同时访问的线程数量,源码创建了指定大小的LinkedBlockingQueue的线程池 4. 线程池的好处 降低资源消耗,提高响应原创 2021-12-29 17:55:57 · 1605 阅读 · 0 评论 -
五、线程并发高级部分之多线程之间交互:线程阀
概念:线程与线程之间相互制约和相互交互的机制。 1. 阻塞队列BlockingQueue。 1.1 Queue(队列):保存一组元素,先进先出的线性表,队头删除,队尾插入。 1.2 Deque(双端队列\栈):两端都可以进出的队列。先进后出。 阻塞队列:存储和删除操作会等待队列可用时进行操作。常用于生产者和消费者情景,生产者存放元素的容器,消费者读取元素的容器。 2. 数组阻塞队列ArrayBlockingQueue 概念:由数组支持的有界的阻塞队列,(FIFO)先进先出对元素进行排序存储。有界缓存,一旦创原创 2021-12-29 17:50:20 · 990 阅读 · 0 评论 -
四、线程并发基础之线程安全的集合类
1. Hashtable:继承于Dictionary,散列表,键值对,实现Map、Cloneable、Serializable接口,key和value都不能为空。 影响参数: 初始容量:哈希表创建时的容量; 加载因子:哈希表容量增加的尺度。通常是0.75。 线程安全原因:每个方法中都实现了Serializable接口。 2. ConcurrentHashMap:hashMap安全版,比hashtable效率高,使用锁分离技术,内部使用段(Segment) 3. CopyOnWriteArrayList:使.原创 2021-12-29 17:46:15 · 1022 阅读 · 0 评论 -
三、线程并发基础之Thread安全
1. Java内存模型与多线程 数据读取顺序优先级:寄存器->高速缓存->内存。 统一内存管理模型:JMM(Java Memory Model),屏蔽底层平台内存管理细节,在多线程环境中必须解决可见性和有序性。 主内存:Java堆内存,存放所有类实例、静态数据等变量,多个线程共享。 工作内存:该线程从主内存拷贝过来的变量以及访问方法所获得的局部变量,线程私有。 可见性问题:多个线程之间不能通信,只能通过共享变量,每new一个对象会被分配到主内存中,每个线程会在工作内存中存储自己的对象副本,工作原创 2021-12-29 17:42:35 · 946 阅读 · 0 评论 -
二、线程并发基础之Java里的Thread
1. 线程简单实现的三种方法 1.1 直接extendsThread覆盖run()方法即可, /** * @Author KanLina * @Description 创建线程方式(一) * @Date 10/22/21 2:43 PM **/ public class ThreadA extends Thread { @Override public void run() { super.run(); try { //模拟.原创 2021-12-29 17:26:02 · 1117 阅读 · 0 评论 -
一、线程并发基础之概念部分
1. CPU核心数、线程数 cpu位宽越大,处理数据运算范围更大,支持更大容量内存。 多核心(CMP):单芯片多处理器。 多线程(SMT):多个线程同步执行共享处理器上的执行资源。提高运算部件利用率、缓和由于数据或缓存带来的延迟。 核心数、线程数:增加核心数就是增加线程数,一般是1:1对应,Intel超线程是1:2。 linux查看CPU型号: cat /proc/cpuinfo |grep name | cut -f2 -d: | uniq -c Linux查看CPU有几核几个线程: grep 'pro原创 2021-12-29 17:03:20 · 690 阅读 · 0 评论