Java基础-线程同步-锁

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wanlong360599336/article/details/60584455

1.效果:

2.代码:

//************************************同步语句块-锁**********************************
public class MultipleThreadSynchronizedStudy {

    public static void main(String[] args) {
        ShareObjects data=new ShareObjects();//共享同一个数据data
        SynchronizeThread thread1=new SynchronizeThread("Thread1",data);
        SynchronizeThread thread2=new SynchronizeThread("Thread2",data);
        thread1.start();
        thread2.start();
    }

}

class ShareObjects{
    public String shareObject="";

    public String getShareObject() {
        return shareObject;
    }

    public void setShareObject(String shareObject) {
        this.shareObject = shareObject;
    }
}

class SynchronizeThread extends Thread{
    private ShareObjects sData;
    SynchronizeThread(String threadName,ShareObjects sObject){
        super(threadName);
        this.sData=sObject;
    }
    //Object o=new Object();
    public void run(){
        
        //synchronized(obj)同步块-锁,防止抢数据
        //synchronized(o){}
        synchronized(sData){
            for(int i=1;i<6;i++){
                if(this.getName().equals("Thread1")){
                    sData.setShareObject("这是Thread1");
                    try{
                        Thread.sleep((int)Math.random()*40);
                    }
                    catch(Exception e){
                        e.printStackTrace();
                    }
                }else if(this.getName().equals("Thread2")){
                    sData.setShareObject("这是Thread2");
                    try{
                        Thread.sleep((int)Math.random()*40);
                    }
                    catch(Exception e){
                        e.printStackTrace();
                    }
                }
                System.out.println(this.getName()+":"+sData.getShareObject());
            }
        }
    }
}




猜你喜欢

转载自blog.csdn.net/wanlong360599336/article/details/60584455