线程安全的问题,这是编程中肯定会遇到,遇到必须要解决的问题
来源:互联网 发布:手机电子书制作软件 编辑:程序博客网 时间:2024/06/05 00:28
在计算机编程中,线程的出现极大的提高了我们的运行效率,所以程序中好多都是多线程,然而多线程的使用却存在一些问题,就是当他操作共享数据的时候,如果不对它们进行严格的把控就有可能出现一些问题,就会导致多线程不仅不会增加效率反而会造成程序bug,所以为了防止这种事情出现,今天就帮助大家解决这个问题,让大家知道什么时候可能会出现问题,并且如何解决它,如果您认为这篇文章对您有用,欢迎您关注我们趣IT科技。
找到可能出现问题的地方,只需三点
明确哪些代码是多线程运行代码,run方法中的就是多线程运行代码
.明确共享数据,成员变量就是共享数据
明确多线程运行代码中哪些语句是操作共享数据的,run方法中操作成员变量
举例说明
代码文本
package tset;
class Bank{
private int sum; //这是共享数据
public void add(int n){ //add在run中,他也是多线程运行代码
sum+=n; //AAAAA这是对数据进行操作,可以看做写会出问题
System.out.println("sum="+sum); //这里也是,但是可以看成读,不会出问题
}
}
class Cus implements Runnable{
private Bank b=new Bank();
public void run(){ //这是多线程运行代码
synchronized(b){ // 我们可以看出在AAAAA处存在问题,所以我们要用锁解决问题了
for(int x=0;x<3;x++)
{
b.add(100);
}
}
}
}
public class AS{
public static void main(String []args){
Cus c=new Cus();
Thread t1=new Thread(c);
Thread t2=new Thread(c);
t1.start();
t2.start();
}
}
代码结果
分析
可以看出,他是完全正确的,用了一个小例子来给大家解决问题多线程中可能遇到的问题,以及在什么时候需要加上锁,希望这篇文章对您有用,欢迎您关注我们头条号:趣IT科技。
每天持续分享关于c语言,java,php,html等计算机编程方面的小知识,如果你也喜欢编程,如果你也热爱编程,那么你就来关注我们,一起交流,一起进步,喜欢您就点个赞。
关注头条号:趣IT科技
本文为头条号作者发布,不代表今日头条立场。
- 线程安全的问题,这是编程中肯定会遇到,遇到必须要解决的问题
- Android中肯定会遇到的问题——内存泄漏
- 会遇到的问题
- Opengl编程遇到的问题以及解决
- CEF会遇到的问题
- 电子商务网站必须要解决的若干技术问题
- 电子商务网站必须要解决的若干技术问题
- 电子商务网站必须要解决的若干技术问题
- 电子商务网站必须要解决的若干技术问题
- 解决必须要alert一下,才生效的问题
- 关于学习编程中会遇到的一些小问题
- 解决遇到动态加载jar安全的问题。
- C++线程遇到的问题
- 这是在开发的时候经常会遇到的问题希望对大家有所帮助
- 克服困难,解决遇到的问题!!
- 遇到麻烦问题的解决~
- windows编程遇到的问题
- ACE编程遇到的问题
- JavaScript开发者该知道的setTimeout秘密
- 反向代理与 Real-IP 和 X-Forwarded-For
- 数据库事务四种隔离级别
- JavaWeb20-文件上传&下载(Java真正的全栈开发)
- Cocos2d-x 3.x 图形学渲染系列七
- 线程安全的问题,这是编程中肯定会遇到,遇到必须要解决的问题
- 对 Select 的各种操作(JQuery)
- hive时间操作函数
- 简单讨论一下 jQuery 事件
- 游戏核心之固定流水线
- Java 使用httpclient Post与cxf 发布的Webservice通信
- filter 优化
- JS —— 轮播图中的缓动函数的封装
- SpringMVC ----从 配置文件开始