single thread execution

single thread execution主要思想是:在同一时刻,对于某一共享资源,只能有一个人访问,即资源同步。


package gate;

public class Person {
    
private String name;
    
private String address;
    
    
public synchronized void  setNameAddress(String name,String address){
        
this.name = name;
        
this.address = address;
        check();
    }
    
private  void check(){
        
if(!name.equals(address)){
            System.out.println(
"problem:"+name+","+address);
        }
        
    }
}

/*****************************/

package gate;

public class RunThread extends Thread {
    
private Person person;
    
private String name;
    
private String address;
    
public RunThread(Person person,String name,String address){
        
this.person =person;
        
this.name  =name;
        
this.address  =address;
    }
    
    
public  void run(){
        
while(true){
            person.setNameAddress(name,address);
            
        }
    }

}
/*******************************/
package gate;

public class Test {
    
public static void main(String[] args) {
        Person person 
= new Person();
        
new RunThread(person,"345","345").start();
    
        
new RunThread(person,"456","456").start();
    
    }
}


参与者如下:
共享资源(Person ),资源利用者(RunThread)
对于共享资源中的线程非安全方法需要加入锁机制(
synchronized或者ReentrantLock)进行同步,确保在某个时间点只有一个线程在访问该方法。
适应的时机:
多线程环境(废话),资源共享(又是废话),资源的状态发生变化(状态不会变化的对象线程安全的)


posted on 2010-08-08 00:16 nod0620 阅读(165) 评论(0)  编辑  收藏 所属分类: 多线程


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜