通过在方法声明中加入synchronized关键字,可以声明同步方法
public synchronized voidfetchMoney(){
synchronized(this){
...}
}
synchronized方法控制对对象成员的访问,每个对象对应一把锁,
每个synchronized方法都必须获得调度该方法的对象才能执行,
本方法一旦执行就独享该锁,直到从本方法中返回才释放,然后
被阻塞的线程可以获得锁而投入运行状态,这种同步机制确保了
同一时刻对于同一类的不同对象,synchronized方法成员至少有
一个处于运行状态,避免了对对象成员的访问冲突:
package com.thread.util;
import java.util.Scanner;
public class threadDom1 implements Runnable{
private static int y_e=1000;
public void run(){
fetchMoney();
}
public synchronized void fetchMoney(){
System.out.println("输入取款金额:");
Scanner scan=new Scanner(System.in);
int fMoney=scan.nextInt();
if(fMoney<=y_e){
y_e-=fMoney;
System.out.println("您的余额:"+y_e);
}
else
System.out.println("您的余额不足:");
try{
Thread.sleep(1000);
}catch (Exception e){}
}
public static void main(String[] args){
threadDom1 target=new threadDom1();
new Thread(target).start();
new Thread(target).start();
}
}