并发编程
文章平均质量分 78
kk_lina
这个作者很懒,什么都没留下…
展开
-
七、线程并发高级部分之JDK7新增的Fork/Join
化繁为简,分而治之。利用递归的分解和合并,直到任务小到可以接受的程度。1. Future任务机制和FutureTaskFuture类对具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。boolean cancel(boolean mayInterruptIfRunning):取消任务,参数表示是否允许取消正在执行却没有执行完毕的任务。boolean isCancelled() :任务是否取消成功,如果在完成之前取消则为true。boolean isDone(原创 2021-12-29 18:04:30 · 763 阅读 · 0 评论 -
六、线程并发高级部分之线程池
1. 单线程线程池 newSingleThreadExecutor线程池只有一个线程在工作,单线程串行执行所有任务,如果异常,按照提交顺序选择新线程继续执行。2. 可缓存的线程池 newCachedThreadPool调用execute将重用以前构造的线程,线程不可用才创建新线程,60s未使用会被移除。3. 固定大小的线程池 newFixedThreadPool可以指定同时访问的线程数量,源码创建了指定大小的LinkedBlockingQueue的线程池4. 线程池的好处降低资源消耗,提高响应原创 2021-12-29 17:55:57 · 1614 阅读 · 0 评论 -
五、线程并发高级部分之多线程之间交互:线程阀
概念:线程与线程之间相互制约和相互交互的机制。1. 阻塞队列BlockingQueue。1.1 Queue(队列):保存一组元素,先进先出的线性表,队头删除,队尾插入。1.2 Deque(双端队列\栈):两端都可以进出的队列。先进后出。阻塞队列:存储和删除操作会等待队列可用时进行操作。常用于生产者和消费者情景,生产者存放元素的容器,消费者读取元素的容器。2. 数组阻塞队列ArrayBlockingQueue概念:由数组支持的有界的阻塞队列,(FIFO)先进先出对元素进行排序存储。有界缓存,一旦创原创 2021-12-29 17:50:20 · 999 阅读 · 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 · 1024 阅读 · 0 评论 -
三、线程并发基础之Thread安全
1. Java内存模型与多线程数据读取顺序优先级:寄存器->高速缓存->内存。统一内存管理模型:JMM(Java Memory Model),屏蔽底层平台内存管理细节,在多线程环境中必须解决可见性和有序性。主内存:Java堆内存,存放所有类实例、静态数据等变量,多个线程共享。工作内存:该线程从主内存拷贝过来的变量以及访问方法所获得的局部变量,线程私有。可见性问题:多个线程之间不能通信,只能通过共享变量,每new一个对象会被分配到主内存中,每个线程会在工作内存中存储自己的对象副本,工作原创 2021-12-29 17:42:35 · 948 阅读 · 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 · 1124 阅读 · 0 评论 -
一、线程并发基础之概念部分
1. CPU核心数、线程数cpu位宽越大,处理数据运算范围更大,支持更大容量内存。多核心(CMP):单芯片多处理器。多线程(SMT):多个线程同步执行共享处理器上的执行资源。提高运算部件利用率、缓和由于数据或缓存带来的延迟。核心数、线程数:增加核心数就是增加线程数,一般是1:1对应,Intel超线程是1:2。linux查看CPU型号:cat /proc/cpuinfo |grep name | cut -f2 -d: | uniq -cLinux查看CPU有几核几个线程:grep 'pro原创 2021-12-29 17:03:20 · 692 阅读 · 0 评论