百度搜的线程实例:2个人去银行取钱。
不同线程抢资源,是因为资源唯一。当一个线程占用资源时,另一个线程必须等待该线程释放资源,才能进行调用
public class Singleton3{
public static void main(String args[]){
Runner r=new Runner();//两个线程t1,t2共用一个接口实例
Thread t1=new Thread(r);
t1.setName("用户一");
Thread t2=new Thread(r);
t2.setName("用户二");
t1.start();
t2.start();
}
}
class Runner implements Runnable{ //实现Runnable接口,重写线程方法run()
private int count=2000;
public void run(){
synchronized (this) { //锁synchronized表示该块同时只允许一个线程访问
for(int i=0;i<4;i++){
count=count-100;
System.out.println("当前线程:"+Thread.currentThread().getName()+" ,银行存款的余额是: "+count);
}
}
}
} |