一、解释 线程之间通信的两个基本问题是互斥和同步。 线程同步是指:线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时,应该等待,直到消息到达时才被唤醒。 线程互斥是指:对于共享的操作系统资源(指的是广义的“资源”,而不是Windows.res文件,譬如全 ...
分类:
编程语言 时间:
2018-12-04 19:59:39
阅读次数:
128
互斥锁 条件变量 信号量 总结: 互斥锁是是访问共享变量的,防止多线程同时写出现脏数据。 信号量是用来线程同步的,可两线程双向互相通知,也可单向通知。 条件变量是信号量的一种封装,用于线程单向等待另一个线程的通知,也可先后多个线程等待同一个条件变量的唤醒。 参考资料:https://blog.csd ...
分类:
编程语言 时间:
2018-12-02 20:11:18
阅读次数:
226
Java多窗口卖票问题详解Java在练习Java多线程的过程中,通常都会通过多窗口卖票这个问题来详细逐渐解析多线程的线程同步,其中涉及到同步代码块,同步方法和互斥锁。铁道部发布了一个售票任务,销售1000张票,要求有10个窗口来进行销售,请编写多线程程序来模拟这个效果。 第一步class Test4... ...
分类:
编程语言 时间:
2018-12-02 20:09:45
阅读次数:
263
linux下为了多线程同步,通常用到锁的概念。posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。即对象互斥锁的概念,来保证共享数据操作的完整性 ...
分类:
其他好文 时间:
2018-12-02 20:02:54
阅读次数:
202
程序:有序严谨的指令集 进程:程序的同时多运行 线程:程序中不同的执行路径 线程同步: 是指一段程序执行过程中,无论成功还是失败,其他线程都会等待这段程序执行完毕,才会转入其他线程 extend Thread, 重写run方法, 直接new 调用start() implement Runnable ...
分类:
编程语言 时间:
2018-12-01 22:02:54
阅读次数:
199
和线程概念的引入背景 进程提供了多道编程, 让不同的程序可以看似同时在执行, 提高了计算机的利用率.但是进程也有它的缺陷: 1.进程只能在一个时间干一件事情, 如果想同时干两件事或者多件事, 进程就无能为力了. 2.进程再执行的过程中如果阻塞, 整个进程就会挂起, 即使进程中有些工作不依赖于输入的数 ...
分类:
编程语言 时间:
2018-11-30 20:10:17
阅读次数:
224
如果没有做要求,用实现接口的方法写进程; 至少有继承的机会; 实际上,更多的情况下是多线程计算; 两个线程,t1/t2,同时启动; 创建了一只猪,创建了一只鸟; 第一个线程承载猪,第二个线程承载鸟; 很可能是交替进行,但也未必;和休眠时间相关; 同时去争夺一种资源,线程同步的问题; Thread类本... ...
分类:
编程语言 时间:
2018-11-30 20:05:12
阅读次数:
292
================第十课 线程同步================一、竞争与同步--------------当多个线程同时访问其所共享的进程资源时,需要相互协调,以防止出现数据不一致、不完整的问题。这就叫线程同步。范例:vie.c理想中的原子++:-----------------+-... ...
分类:
编程语言 时间:
2018-11-30 00:41:05
阅读次数:
262
在学习单例模式前,我们首先要了解两个问题。 1、单例模式有哪些作用 第一、控制资源的使用,通过线程同步来控制资源的并发访问;第二、控制实例产生的数量,达到节约资源的目的。第三、作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。 2、什么时候 ...
分类:
其他好文 时间:
2018-11-27 11:10:17
阅读次数:
203
一、消息队列在实际场景中的使用 流程A在处理时没有在当前线程同步的处理完而是直接发送了一条消息A1到队列里,然后消息队列过了一段时间(可能是几毫秒 几秒 几分钟)这个消息开始被处理,消息处理的过程就相当于流程A被处理;当然这只是一个简单的模型下面我们套用实际的场景来看一下,比如下单成功后发送短信提醒 ...
分类:
其他好文 时间:
2018-11-26 22:04:00
阅读次数:
241