(1)锁:进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理。 虽然使用加锁的形式实现了顺序的执行,但是程序又重新变成串行了,这样确实会浪费了时间,却保证了数据的安全。 (Lock) im ...
分类:
编程语言 时间:
2018-10-24 17:52:05
阅读次数:
302
多线程设计模式第三篇,介绍基础的生产者-消费者模式和实用的读写锁模式
分类:
编程语言 时间:
2018-10-18 18:10:39
阅读次数:
223
import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; public class Five { public static void main(String[] arg... ...
分类:
编程语言 时间:
2018-10-14 13:47:46
阅读次数:
174
一丶背景 说到生产者消费者模式就要先提提多线程了,多线程开发是开发中所常用的,多线程程序相对于单线程程序稳定性更强, 一个线程挂了不会影响整个程序的正常运行。但是当多线程同时操作一个数据源的时候就会出现脏读。 二丶介绍生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。 ...
分类:
其他好文 时间:
2018-10-08 17:20:12
阅读次数:
171
线程的通讯(生产者和消费者) ? 生产者和消费者模式的思路: A:生产者 先看是否有数据,有就等待;没有就生产,生产完以后通知消费者来消费数据 B:消费者 先看是否有数据,有就消费;没有就等待,通知生产者生产数据? 线程的通讯需要注意的地方: 生产者和消费者表示不同的线程 1.生产者和消费者操作的必 ...
分类:
编程语言 时间:
2018-10-06 15:33:42
阅读次数:
151
进程 使用 导入类库 创建进程 Process参数:group=None,target=None, name=None, args=(), kwargs={}) 全局变量 进程间全局变量不共享,因为进程是复制出来的 线程 使用 导入类库 创建线程 Thread参数:group=None,target ...
分类:
编程语言 时间:
2018-09-27 22:01:46
阅读次数:
155
1. JMS是什么 1.1. JMS的基础 JMS是什么:JMS是Java提供的一套技术规范 JMS干什么用:用来异构系统 集成通信,缓解系统瓶颈,提高系统的伸缩性增强系统用户体验,使得系统模块化和组件化变得可行并更加灵活 通过什么方式:生产消费者模式(生产者、服务器、消费者) 1.2. JMS消息 ...
分类:
其他好文 时间:
2018-09-23 13:50:31
阅读次数:
835
系统启动一个新线程的成本是比较高的,因为它涉及与操作系统交互,在这种情况下,使用线程池可以很好地提高性能。 线程池的模式很像生产者消费者模式,消费的对象是一个一个的能够运行的任务。 线程池设计思路 1、准备一个任务容器。 2、一次性启动10个消费者线程。 3、刚开始任务容器是空的,所以线程都wait ...
分类:
编程语言 时间:
2018-09-22 17:00:16
阅读次数:
147
参考书籍《java多线程编程核心技术》 都是基于wait/notify实现的 一个生产者和一个消费者:操作值 线程类 测试运行 打印输出 如果以此为基础,设计多个生产者和多个消费者,那么运行过程中很可能会发生假死的情况,也就是所有线程都呈现等待的状态 多个生产者与多个消费者:操作值 修改Produc ...
分类:
编程语言 时间:
2018-09-18 19:08:17
阅读次数:
176