java线程同步机制有哪些_多线程同步机制包括哪些,java线程同步机制

多线程同步机制包括哪些什么是多线程同步机制,多线程同步机制包括:1。临界段用于实现“独占占有”;2.信号量用于跟踪有限的资源;3.互斥是核心对象,可以实现不同线程之间的“独占占有”;4.事件通常用于设计一些自定义的同步对象。

d1e6d0f7acc6e3e26f6ed33423afa255.png

操作环境:Windows7系统,戴尔G3电脑。

多线程同步机制包括:

1、关键部分

临界段用来实现“独占占有”。应用范围在单个进程的线程之间。它是:

局部对象,不是核心对象。

快速高效。

不能有多个关键部分同时等待。

无法检测它是否已被线程放弃。

可以实现线程间互斥,但不能用来实现同步。

2、信号量

信号量用于跟踪有限的资源。它是:

核心对象。

没有主人。

可以命名,所以可以被其他进程打开。

它可以被任何线程释放。

既能实现线程间的互斥,又能实现线程间的同步。

跨进程使用时,如果拥有信号量的线程意外结束,则不会通知其他进程。

3、互斥

互斥是一个核心对象,可以实现不同线程之间的“独占占有”,即使那些线程属于不同的进程。它是:

核心对象。

如果拥有互斥体的线程结束,将会产生一个“已放弃”的错误消息。

我可以被命名,所以它可以被其他进程打开。

只能由拥有它的线程释放。

当跨进程使用时,如果带有互斥体的进程意外结束,其他进程将收到WAIT _ ABANDOEND消息。

4、事件

事件对象通常用于重叠输入/输出,或者设计一些自定义同步对象。它是:

核心对象。

但是用来实现线程的互斥和同步。

可以命名,所以可以被其他进程打开。

当跨进程使用时,如果拥有信号量的线程意外结束,则不会通知其他进程。

注意:临界区和互斥体都有“线程所有权”的概念,所以不能用来实现线程间的同步,只能用来实现互斥。原因是创建临界段或互斥体的线程可以无条件进入被保护程序段,而不需要等待LeaveCriticalSection(),因为它有这个权限。此外,互斥体可以很好地处理放弃操作。如果线程在没有释放对象的情况下意外终止,其他线程可以等待WAIT _ ADOPTED _ 0。但是无论是事件还是信号量都做不到。

事件和信号量可以实现线程和进程之间的互斥和同步。

就使用效率而言,关键区域的效率最高,因为它不是内核对象,而其他三个都是核心对象,需要通过操作系统来实现,效率相对较低。

但是如果你想跨进程使用它,你仍然需要互斥体、事件对象和信号量。

总之:设计的时候,一开始尽量不要用全局变量,如果不行,考虑用Inter.首先是()函数,然后是临界区对象,最后是事件、互斥体和信号量。以上是多线程同步机制的详细内容。请多关注其他关于Lei.com PHP知识的相关文章!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值