首页 > 编程 > Java > 正文

Java基础-线程同步-锁

2019-11-06 06:33:12
字体:
来源:转载
供稿:网友

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());            }        }    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表