ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

线程如何实现保持同步

2021-11-16 12:04:33  阅读:144  来源: 互联网

标签:同步 公共资源 互斥 代码 访问 保持 线程


线程同步的方式主要有: 临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)。

他们的主要区别和特点如下:

1)临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问, 如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。

2)互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。

互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享。

3)信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。

4)事 件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作。

很多人可能不太了解线程同步什么意思,我们要怎么样才能保持他们同步,我们今天要讨论的就是这个问题,希望对大家有所帮助。

首先我们要知道什么是同步就是有时候在进行多线程的程序设计中需要实现多个线程共享同一段代码,接下来就是怎么设置同步。

 


接下来我们要做的第一步就是不要让多个线程无序地访问共享资源,对关键代码进行归结放在一个代码块,不要分离。

 

接下来就是保持关键 代码的 原子性,只要有访问时,同时只有一个关键代码可以使用,这样就同步了。

 

接下来还是利用互斥锁实现关键代码的同步访问,采用同步法,对关键字修饰做出相关设置

 

最后是将每一个线程的开始都从这个方法开始,这样只能等一个结束之后下一个再开始,这样就可以同步进行了。

 

想要学习更多java技术知识欢迎大家关注小编java培训专栏!

标签:同步,公共资源,互斥,代码,访问,保持,线程
来源: https://www.cnblogs.com/msjhw/p/15560442.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有