Java并发编程入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

解决问题:同步

并发中,共享变量会导致的一个问题就是线程安全问题,为了解决这个问题,我们要做的就是控制线程访问。在一个线程在访问的这个共享资源的时候,其他线程无法访问,这就是同步。

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);
        }
    }
}
动手写一个线程安全的代码。