解决问题:同步
并发中,共享变量会导致的一个问题就是线程安全问题,为了解决这个问题,我们要做的就是控制线程访问。在一个线程在访问的这个共享资源的时候,其他线程无法访问,这就是同步。
Java为了解决同步问题,专门设置了关键字,叫synchronized,我们来写一个线程安全的代码:
public class Main {
public static void main(String[] args) throws InterruptedException {
int i=0;
ObjA o=new ObjA(i);
TheThread theThread1=new TheThread(o);
TheThread theThread2=new TheThread(o);
theThread1.start();
theThread2.start();
}
}
class TheThread extends Thread{
private ObjA objA;
public TheThread(ObjA objA){
this.objA=objA;
}
public void run(){
objA.method();
}
}
class ObjA{
int i;
public ObjA(int i){
this.i=i;
}
synchronized public void method(){
for(int j=0;j<50;j++){
i++;
System.out.println(i);
}
}
}
动手写一个线程安全的代码。