如何让多线程去读取一个资源,保证线程安全

 时间:2024-10-12 16:19:34

1、您可以试想一下,如果不解决一个值被多次修改,您的朋友通过柜台操作您的账户,您通过取款机操作您的银行卡账户,您的账户有1000,当系统第一查询的时候,您的账户都是有钱的,您们两个同时取钱,那么两次取款都会成功。

2、这个过程会有可能发生线程安全的问题。因此,在银行等对数字比较敏感的行业中,是不允许这种事发生的。

如何让多线程去读取一个资源,保证线程安全

3、为了解决这个问题,通常采取的措施是不让一条数据被同时修改。

如何让多线程去读取一个资源,保证线程安全

4、我们创建一个类,并在类中创建一个可以执行代码的main方法。

如何让多线程去读取一个资源,保证线程安全

5、创建两个新的线程。如下图所示:

如何让多线程去读取一个资源,保证线程安全

6、接下来,我们创建一个匿名内部类,用来重写run方法。将业务逻辑放入其中即可。

如何让多线程去读取一个资源,保证线程安全

7、我们这里做一个while循环,让线程多次去执行while循环。

如何让多线程去读取一个资源,保证线程安全

8、在java中,我们采用互斥锁的方式,让数据只能同时被一个人操作,第二个人要操作,他酋篚靶高需要等待这个个人操作完成后,他才能操作,这样就解决了线程安全问题。

如何让多线程去读取一个资源,保证线程安全

9、在java中,我们线程锁使用的是synchronized.您可以将其加在方法中,给整个方法都加锁。

如何让多线程去读取一个资源,保证线程安全

10、也可以将关键部分放到一个互斥锁中,当多次操作同时进行时候,等待之前用户操作完成后,下一个用户或是下一次操作再继续。

11、以上既是多线程中比较常用的互斥锁,他可以解决一个时间点多次操作而带来的线程安全问题。

如何让多线程去读取一个资源,保证线程安全
  • 如何修改HTML的文件
  • 在C#中怎么循环调用Resources文件中的图片
  • 打不开网页但是QQ可以登录如何解决
  • 怎样用圆珠笔来装焊锡丝
  • 苹果Mac calibre怎么获取书籍封面
  • 热门搜索
    我爱阅读手抄报图片 科学家的故事手抄报 成长的足迹手抄报 小学生禁毒手抄报 小学英语手抄报图片 护士节手抄报 民族风俗手抄报 网络安全手抄报图片 关于动物的手抄报 七彩童年手抄报