- import java.util.Random;
- public class MultThead {
- public static void main(String[] args) {
- BankCount bankcount = new BankCount();
- int i = 10;
- Random rand = new Random();
- new Thread(new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- while(true)
- {
- int num = rand.nextInt(200);
- bankcount.addMoney(num);
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }).start();
- new Thread(new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- while(true)
- {
- int num = rand.nextInt(200);
- bankcount.getMoney(num);
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }).start();
- }
- }
- class BankCount
- {
- private int count = 0;
- synchronized void addMoney(int num)
- {
- System.out.println("当前账户余额: "+count);
- count+=num;
- System.out.println("存入"+num);
- }
- synchronized void getMoney(int num)
- {
- System.out.println("申请取出"+num+"钱");
- if(count-num<0)
- {
- System.out.println("当前账户余额 "+count);
- System.out.println("余额不足");
- }
- else
- {
- System.out.println("当前账户余额 "+count);
- count-=num;
- System.out.println("取出"+num);
- }
- }
- }
- 部分打印结果:
- 当前账户余额: 0
- 存入151
- 申请取出158钱
- 当前账户余额 151
- 余额不足
- 申请取出170钱
- 当前账户余额 151
- 余额不足
- 当前账户余额: 151
- 存入33
- 申请取出155钱
- 当前账户余额 184
- 取出155
- 当前账户余额: 29
- 存入3
- 当前账户余额: 32
- 存入6
- 申请取出25钱
- 当前账户余额 38
- 取出25
- 申请取出128钱
- 当前账户余额 13
- 余额不足
- 当前账户余额: 13
- 存入161
- 申请取出126钱
- 当前账户余额 174
- 取出126
- 当前账户余额: 48
java实现多线程以及sychronized实现并发控制
最新推荐文章于 2024-09-14 18:46:05 发布