版权声明:本文为博主原创文章,未经博主允许不得转载。 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());
}
}
}
}