1.java多线程 1.1--java多线程通信? 多线程并发编程时,难免会遇到线程间的通信问题。线程通信方式的思想大体上来说可以分为两种:共享和传递。 共享的实现方式可以是共享变量、共享文件、数据库、网络等。传递的实现方式可以是消息队列、生产者-消费者模型等。 (1)共享变量: 使用volatil ...
分类:
编程语言 时间:
2020-04-12 14:30:23
阅读次数:
68
Java多线程并发工具类-Semaphore对象讲解 通过前面的学习,我们已经知道了Java多线程并发场景中使用比较多的两个工具类:做加法的CycliBarrier对象以及做减法的CountDownLatch对象并对这两个对象进行了比较。我们发现这两个对象要么是做加法,要么是做减法的。那么有没有既做 ...
分类:
编程语言 时间:
2020-04-12 10:16:24
阅读次数:
64
今天三个部分的知识、递归锁(解决同步锁造成的锁死现象)、同步对象(类似一个锁,使两个线程之间进行同步)、信号量(控制线程数量的一个锁),悄悄的说一下,算上昨天的同步锁,虽然已经讲了四种锁了,但是据说总共是有五种锁的,最后一个我还不知道是个啥。 一、递归锁 昨天引入了同步锁的概念,但是因为同步锁的引入 ...
分类:
编程语言 时间:
2020-04-10 00:19:10
阅读次数:
59
1. 线程定义 线程是操作系统调度的最小单位 它被包含在进程之中,是进程中的实际运作单位 进程本身是无法自己执行的,要操作cpu,必须创建一个线程,线程是一系列指令的集合 线程定义拓展回答内容 1. 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位 2. 一条线程 ...
分类:
编程语言 时间:
2020-04-09 09:12:55
阅读次数:
93
操作系统课内实验 ——信号量 题目描述: 假设医院有 M(M >=1)个医生,每个医生的办公室很小,只能放一张桌子两个凳子,医生与病人一人坐一个,即一个医生一次只能给一位病人看病。当医生正在给某一位病人看病时,其他病人应该在办公室外走廊上的椅子上坐候,走廊上有 N(N>=3)个座位。当医生每看完一个 ...
分类:
其他好文 时间:
2020-04-07 20:36:54
阅读次数:
87
报错原因: 共享内存信号量kernel.sem参数设置过小 参数含义 上面的4个数据分别对应:SEMMSL、SEMMNS、SEMOPM、SEMMNI这四个核心参数,具体含义和配置如下。 SEMMSL:每个用户拥有信号量最大数量 SEMMNS:系统信号量最大数量 SEMOPM:每次semop系统调用操 ...
分类:
其他好文 时间:
2020-04-07 20:35:00
阅读次数:
69
1.wait()方法和sleep()方法: wait()方法在等待中释放锁;sleep()在等待的时候不会释放锁,抱着锁睡眠。 2.notify(): 随机唤醒一个线程,将等待队列中的一个等待线程从等待队列中移到同步队列中。 public class Demo_Print { public stat ...
分类:
编程语言 时间:
2020-04-04 14:27:06
阅读次数:
73
1.函数如下 2、测试结果如下: 这个函数在两个不同优先级里面调用,可以得出两个实验结论: a.即使没有vtaskdelay或者其他信号量获取阻塞存在,依然会发生调度,操作系统美一个系统节拍调度一次(我的节拍周期是1ms)。 b.函数cnt计数是静态变量,任务再次回来已经不是原来的值了,因此函数里面 ...
分类:
其他好文 时间:
2020-04-02 15:51:27
阅读次数:
321
unittest 3.2版中更新了signal信号量的功能,用于在遇到Ctrl+C键盘中断时优雅的结束。 当用户按下Ctrl+C时,会立即或等当前用例执行完后再停止运行,并输出结果,如果用户再次按下Ctrl+C,则会立即抛出KeyboardInterrupt异常并停止。 启用singal功能的方法有 ...
分类:
其他好文 时间:
2020-03-31 20:40:09
阅读次数:
68
Semaphore 1、介绍 Semaphore是一个计数信号量,可以控同时访问的线程个数,它的本质是一个"共享锁"。 信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通 ...
分类:
其他好文 时间:
2020-03-31 18:57:22
阅读次数:
55