线程安全的问题,这是编程中肯定会遇到,遇到必须要解决的问题
在计算机编程中,线程的出现极大的提高了我们的运行效率,所以程序中好多都是多线程,然而多线程的使用却存在一些问题,就是当他操作共享数据的时候,如果不对它们进行严格的把控就有可能出现一些问题,就会导致多线程不仅不会增加效率反而会造成程序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等计算机编程方面的小知识,如果你也喜欢编程,如果你也热爱编程,那么你就来关注我们,一起交流,一起进步,喜欢您就点个赞。