一、第五次作业——多线程电梯 1.设计考虑 这次主要的数据共享产生在调度器和输入线程共享了输入的请求队列,以及在每个电梯线程和调度器线程各自共享电梯的状态。因此在设计的时候主要要对这两处数据共享进行同步保护。现在看来当时自己设计还是有一定问题的,做到了将输入线程和调度器线程之间的共享对象抽取出来一个 ...
分类:
其他好文 时间:
2018-05-01 10:49:29
阅读次数:
121
Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并发编程主题之前,我们先来了解一下 ...
分类:
编程语言 时间:
2018-05-01 00:36:31
阅读次数:
199
一.多线程知识总结 1.线程同步 有关创建线程的知识就不过多的叙述了。就从主要的开始讲吧,讲一下线程的同步。与操作系统中的进程同步一样,线程同样面临着资源共享的问题,怎样处理线程的资源共享是运用多线程最重要的地方。在Java中是引入锁这一概念来处理多线程之间的资源竞争的关系的。“锁”的对象可以是代码 ...
分类:
编程语言 时间:
2018-04-30 18:07:07
阅读次数:
175
oo5_7 多线程同步策略分析 1.多线程电梯时的策略 线程分析 多线程电梯时,我还执着于时间的精准性,也就是上下楼一定要多少多少秒,所以采取的是假时间策略。 为了实现假时间策略,我将三部电梯的运行封闭到了一个线程当中,单独一个线程内部的执行是不会受到线程调度产生的误差的影响的。 在这基础上,考虑到 ...
分类:
其他好文 时间:
2018-04-30 13:33:22
阅读次数:
185
高效并发编程 并发编程的基本模型包括,通过消息机制来管理运行顺序的message passing, 通过互斥保护共享的shared memory。 线程同步的基本原则 1. 最低限度共享变量,考虑使用immutable对象 2. 尽量减小锁粒度 3. 互斥器和条件变量足以完成绝大多数任务,尽量使用高 ...
分类:
编程语言 时间:
2018-04-29 16:27:36
阅读次数:
214
简介 开源的完全使用JAVA开发的一种时间调度框架,可多线程同步执行。 使用 quartz有两种使用方式:RAM、JDBC。任务的调度也有两种方式:SimpleSchedule、CronSchedule 简单调用 第一步首先要导入 Quartz 的jar包,官网有zip文件可供下载,maven 项目 ...
分类:
其他好文 时间:
2018-04-27 18:07:45
阅读次数:
219
三、采用BlockingQueue实现 BlockingQueue也是java.util.concurrent下的主要用来控制线程同步的工具。 BlockingQueue有四个具体的实现类,根据不同需求,选择不同的实现类1、ArrayBlockingQueue:一个由数组支持的有界阻塞队列,规定大小 ...
分类:
编程语言 时间:
2018-04-27 15:52:02
阅读次数:
168
ReentrantLock简介 ReentrantLock是一个可重复的互斥锁,又被称为独占锁,可重入的意思是:ReentrantLock锁可以被单个线程多次获取。但是在同一个时间点只能被一个线程锁持有 ReentrantLock使用一个FIFO(先进先出)的等待队里来管理获取该锁所有线程的。 Re ...
分类:
编程语言 时间:
2018-04-27 12:16:58
阅读次数:
144
主线程的特性 : 只有当所有子线程执行完毕后,主线程才会关闭 守护(主)线程(daemonic=True) : 一旦主线程关闭,即使子线程仍在执行,也会立刻停止 (start()前设置) 线程同步 : thread_a.join() --> 确保线程 thread_a 执行结束后,再执行其他线程 (... ...
分类:
其他好文 时间:
2018-04-27 02:46:44
阅读次数:
183
一、Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。 Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值 ...
分类:
其他好文 时间:
2018-04-26 11:57:05
阅读次数:
158