保融22春招笔试

 #保融科技春招笔试题#
编程题:创建两个线程,一个是收款的线程,一个是提款的线程,当提款的时候余额不足时,提款线程进入等待,等待存款线程进行存款,当存款线程进行一次存款后,提醒提款线程再次尝试提款,如果余额足够,进行提款,余额不足,再次等待存款线程。
这该怎么写呢
#春招##笔试题目##保融科技#
全部评论
现在有结果了吗
1 回复 分享
发布于 2022-03-03 23:24
输出结果
4 回复 分享
发布于 2022-03-03 22:30
我没想到的是前端也考了SQL的查询🤣
2 回复 分享
发布于 2022-03-02 21:01
看了评论大佬们后 自己尝试了一下 public class MyTest {     public static void main(String[] args) {         Bank bank = new Bank();         bank.setMoney(0);         bank.setFlag(false);         new Thread(()->{             for (int i = 0; i < 5; i++) {                 bank.get_(100);             }         }).start();         new Thread(()->{             for (int i = 0; i < 10; i++) {                 bank.save_(50);             }         }).start();     } }
2 回复 分享
发布于 2022-03-04 13:15
《现代操作系统》信号量
2 回复 分享
发布于 2022-03-06 10:05
写了一下,不知道对不对🤣,主线程放不下不帖了 class Data {     // 存款     int money = 0;     // 要取的钱     int need = 0;     // 判断取钱标志     public boolean flag = false;     // 生产者     public synchronized void produce(int num) throws InterruptedException {         money += num;         System.out.println("已存入" + num + "元" + ",现在有" + money + "元");         this.notify();         this.wait();         return;     }     // 消费者     public synchronized void consume(int num) throws InterruptedException {         need = num;         System.out.println("需要" + need + "元");         while (money < need) {             this.notify();             this.wait();         }         money -= need;         System.out.println("取钱成功,还剩" + money + "元");         flag = true;         this.notify();         // 唤醒producer线程,否则无法正常结束         return;     } }
1 回复 分享
发布于 2022-03-02 18:50
public class Main {     public static volatile Integer acount=0;     public static Object lock = new Object();     public static void main(String[] args){         new Thread(()->{                 del(30);         }).start();         new Thread(()->{             for (int i = 0; i < 6; i++) {                 add(5);             }         }).start();     }     public static void add(int num){         synchronized(lock){             acount+=num;             System.out.println("存款:"+num);             lock.notify();         }     }     public static void del(int num){         synchronized(lock){             while (acount<num){                 try {                     lock.wait();                     System.out.println("余额不足:"+acount);                 } catch (InterruptedException e) {                 }             }             acount-=num;             System.out.println("取款:"+num);         }     } }
1 回复 分享
发布于 2022-03-02 20:00
知道是生产者和消费者,但是没写出来🤣
点赞 回复 分享
发布于 2022-03-02 16:32
怎么写啊?
点赞 回复 分享
发布于 2022-03-02 17:11
啥时候出结果
点赞 回复 分享
发布于 2022-03-02 17:14
存钱操作和取钱操作分别定义两个同步方法,分别交予两个线程执行。取钱时发现余额不足就唤醒存钱线程并阻塞自己,存钱结束后唤醒取钱线程并阻塞自己,应该是这样写
点赞 回复 分享
发布于 2022-03-02 18:28
可以用reentrantlock 用这个lock实现两个condition 一个await 一个signal 但是 这编程题只能用着原始网页写? 就很傻 直接没写了
点赞 回复 分享
发布于 2022-03-02 19:43
我也碰见这题了,还有一个编程
点赞 回复 分享
发布于 2022-03-02 20:16
编程题第一题直接寄了,哥几个收到面试通知没
点赞 回复 分享
发布于 2022-03-02 22:01
笔试估计凉了,一直想弄出这个题,把后面的题漏了,笔试后写出来了,取钱存钱都用的随机数,应该很好的满足了题意 //启动类 public  class Main {     public static void main(String[] args) {         Message message=new Message();        new Getmoney(message).start();        new SetMoney(message).start();     } } //资源, public class Message {     public volatile int money=0;           //银行卡里存的钱     private boolean flag;          //true代表已经存钱,false代表没存钱,等待存钱     public void setMoney(int money) {   //计算钱总和         this.money += money;     }     public void setMoney2(int money) {            this.money -= money;     }     public int getMoney() {         return this.money;     }     public boolean isFlag() {         return flag;     }     public void setFlag(boolean flag) {         this.flag = flag;     } }
点赞 回复 分享
发布于 2022-03-03 22:25

相关推荐

点赞 评论 收藏
分享
雨夜迈巴赫:哪个厂呀
点赞 评论 收藏
分享
评论
7
52
分享
牛客网
牛客企业服务