线程同步有两种方式:一是方法同步,而是代码块同步。
package 多线程;
public class bank {
//题目:
//银行有个金库
//有两个储户存钱,分别存300元,每次存一百,即存三次。
private int sum=;
// 1, Object obj =new Object();
public synchronized void save(int savings)//throws InterruptedException 这里就可以抛出
{
for(int i=;i<;i++)
{
// 2,synchronized(obj)
// {
sum+=savings;
//模拟多线程安全问题
try{Thread.currentThread().sleep();} catch(InterruptedException e){}
System.out.println(Thread.currentThread().getName()+"存款数为"+sum);
// }
}
}
}
package 多线程;
public class CashBox implements Runnable
{
bank Bank = new bank();
private int savings =;
public void run()
{
Bank.save(savings);
}
}
package 多线程;
public class SynchronizedDemo {
public static void main(String[] args)
{
CashBox cashBox =new CashBox();
Thread depositor1 = new Thread(cashBox);
Thread depositor2 = new Thread(cashBox);
depositor1.start();
depositor2.start();
}
}