java多线程
Torey_Li
本博客主要要来记录学习的课程以及工作中遇到的问题,积累技术,锤炼思维,认识更多的朋友
展开
-
java多线程和并发--java并发协作控制1
线程协作 Thread/Executor/Fork-Join – 线程启动,运行,结束 – 线程之间缺少协作 synchronized 同步 – 限定只有一个线程才能进入关键区 – 简单粗暴,性能损失有点大 如何做到线程之间的协作,比如1号线程与2号线程在执行到某一个地方的时候,要会合一下 Lock Lock也可以实现同步的效果 – 实现更复杂的临界区结构 – tryLock方法可以预判是否...原创 2019-10-27 20:13:24 · 223 阅读 · 0 评论 -
java多线程-java并发数据结构
java并发数据结构 常用的数据结构是线程不安全的 – ArrayList,HashMap, HashSet非同步的,这些在多线程中是不适用的 – 多个线程同时读写,可能会抛出异常或数据错误 传统Vector,Hashtable等同步集合性能过差 并发数据结构:数据添加和删除 – 阻塞式集合:当集合为空或者满时,等待 – 非阻塞式集合:当集合为空或者满时,不等待,返回null或异常 List –...原创 2019-10-27 10:47:08 · 292 阅读 · 0 评论 -
java多线程和并发编程(续)2- java并发框架Fork-Join框架
并行计算 并行模式 – 主从模式(Master-Slave) – Worker模式(Worker-Worker) Java并发编程 – Thread/Runnable/Thread组管理 – Executor – Fork-Join框架 Fork-Join(1) Java7 提供另一种并行框架:分解、治理、合并(分治编程) 适用于整体任务量不好确定的场合(最小任务可以确定) 比如:我们求一...原创 2019-10-24 21:42:58 · 189 阅读 · 0 评论 -
java多线程和并发编程(续)1- java并发框架Executor
java并发框架Executor 并行计算(1) 业务:任务多,数据量大 串行 vs 并行 – 串行编程简单,并行编程困难 – 单个计算核频率下降,计算核数增多,整体性能变高 并行困难(任务分配和执行过程高度耦合) – 如何控制粒度,切割任务 – 如何分配任务给线程,监督线程执行过程 并行计算(2) 并行模式 – 主从模式(Master - Slave) – Workerr模式(Worker...原创 2019-10-23 21:23:57 · 324 阅读 · 0 评论 -
请分成6个线程,计算m到n的值(以1到100000000为例)的总和。要求每个线程计算的数字量之差不超过1.
package work4; /** * @ClassName:Work4 * @Description: * @author: Torey */ public class Work4 { public static void main(String[] args){ Integer toMax=100000000; int threads=6;...原创 2019-10-20 21:56:09 · 2030 阅读 · 0 评论 -
java-多线程管理-主动/被动停止,锁
多线程管理-主动或被动停止线程 线程被动地暂停和终止 – 依靠别的线程来拯救自己 – 没有及时释放资源 – 在生产者/消费者示例中,线程wait的时候,需要靠别的线程来notify,只有notify了,其他线程才能从wait的状态解脱出来,这样线程就是被动的暂停和终止,这种情况很危险,例如线程打开了一个文件,或者拿着某一个锁对象,一旦进入wait状态,锁或者文件不能够及时的释放资源,可以使用定期...原创 2019-10-20 19:16:34 · 379 阅读 · 0 评论 -
java多线程生产者/消费者示例代码
多线程管理 线程类 –通过继承Thread或实现Runable – 通过start方法,调用run方法,run方法工作 – 线程run结束后,线程退出 粗粒度: 子线程与子线程之间、和main线程之间缺乏同步 细粒度:线程之间有同步协作 – 等待 – 通知/唤醒 – 终止 等待:等A线程执行到某一个地方的时候,B线程告A线程,让A等待一会,等A到了,在往下一起走 通知/唤醒: A到了,A告诉B...原创 2019-10-20 11:20:15 · 296 阅读 · 0 评论 -
多线程信息共享-synchronized
多线程信息共享-加锁 关键步骤加锁限制 – 互斥:某一个线程运行一个代码段(关键区),其他线程不能同时运行这个代码段 – 同步:多个线程的运行,必须按照某一种规定的先后顺序来运行 – 互斥是同步的一种特例 互斥的关键字是synchronized – synchronized代码块/函数,只能一个线程进入 – synchronized加大性能负担,但是使用简便 /** * @ClassName...原创 2019-10-17 23:26:50 · 139 阅读 · 0 评论 -
Java多线程信息共享及volatile关键字
多线程信息共享 线程类 – 通过继承Thread或实现Runnable接口 – 通过start方法,调用run方法,run方法工作 – 线程run结束后,线程退出 粗粒度:子线程与子线程之间、main线程之间缺乏交流 细粒度:线程之间有信息交流通讯 – 通过共享变量达到信息共享 – JDK原生库暂不支持发送消息(类似MPI并行库直接发送消息) MPI是一个信息传递应用程序接口,包括协议和语义说明...原创 2019-10-17 22:35:27 · 454 阅读 · 0 评论 -
java多线程-创建和启动
Java多线程创建 java.lang.Thread – 线程继承Thread类,实现run方法 java.lang.Runnable接口 – 线程实现Runnable接口,实现run方法 Java多线程启动 启动 – 调用start方法,会自动以新进程调用run方法 – 直接调用run方法,将变成串行执行 – 同一个线程,多次start会报错,只执行第一次start方法 – 多个线程启动,...原创 2019-10-14 22:09:05 · 662 阅读 · 2 评论