java基础******银行存款
来源:互联网 发布:java二叉树非递归 编辑:程序博客网 时间:2024/05/01 05:18
//去银行存款问题。 一个柜台,一个ATM,每次去存一百块。各存三次、、
或者是一个ATM,
class Bank
{
private int sum = 0; //私有的,当别人创建对象时,也不被调用。void add(int num)
{
sum = sum + num;
System.out.println(sum);
}
}
class Cus implements Runnable //继承接口 重写run方法
{
Bank b = new Bank(); //创建Bank对象,调用其方法。 几个线程共享一个对象
public void run()
{
//Bank b = new Bank(); //创建Bank对象,调用其方法。此时调用run时,线程单独创建一个对象。
for (int i=0; i<3 ; i++ )
{
b.add(100);
}
}
}
class BankDemo
{
public static void main(String[] args)
{
Cus c = new Cus();
Thread t1 = new Thread(c);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
这样会出现这个问题
D:\新建文件夹>java BankDemo
200
300
400
200
500
600
/
线程安全的问题。同步锁
**/
class Bank
{
private int sum = 0; //私有的,当别人创建对象时,也不被调用。
private Object obj = new Object();
void add(int num)
{
synchronized (obj)
{
sum = sum + num;
try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
}
System.out.println(sum);
}
}
}
class Cus implements Runnable //继承接口 重写run方法
{
private Bank b = new Bank(); //创建Bank对象,调用其方法。私有对象, 几个线程共享一个对象
public void run()
{
//Bank b = new Bank(); //创建Bank对象,调用其方法。此时调用run时,线程单独创建一个对象。
for (int i=0; i<3 ; i++ )
{
b.add(100);
}
}
}
class BankDemo
{
public static void main(String[] args)
{
Cus c = new Cus();
Thread t1 = new Thread(c);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
- java基础******银行存款
- java多线程--银行存款取款
- java多线程-多线程同步代码块-银行存款实例-锁synchronized
- java面向对象(银行存款业务无客户)
- 银行存款利率
- 银行存款业务
- 初级银行存款
- 银行存款问题
- 银行存款问题
- MOOC清华《程序设计基础》第1章第5题:银行存款问题
- MOOC清华《程序设计基础》第2章第5题:银行存款问题2
- 理财之银行存款
- 银行存款、取款模型
- 去银行存款取钱续
- 银行存款问题(2)
- 最新银行存款利率表2013
- 银行存款考核系统 v1.60 绿色
- 简单的银行存款取款业务模拟程序
- go语言测试test
- ~使用两个队列实现一个栈~
- [smoj 1022]位置
- html 中 form 的应用
- Attacks on TCP/IP Protocols (Task3) SYN Flooding Attack
- java基础******银行存款
- Java jdk 1.7安装
- (分片连接池)客户端分片的Jedis分布式(Sharding/shared一致性哈希)(redis2.8)
- liferay中整合vue--打包注意事项
- vuikan develop resource
- Android 备份短信
- 图解Linux命令之--tar命令
- 拉格朗日插值
- 音量控制和音频播放