多线程基础问题,谁能在不改代码结构的基础上让控制台输出1000?

weixin_38049686 2014-12-11 02:25:13
 开发四年只会写业务代码,分布式高并发都不会还做程序员?->>>    这是别人问我的问题,他意思是一个公共资源1000,一个线程加800,一个线程减800,然后希望输出1000,结果不是1000,我加了个Thread.sleep(1)让两个线程都执行完,他不满意啊,你们有什么办法没?他意思是加同步什么的!代码: package test; public class ThreadSyn { /** * 一个人卡上有1000元 另外个人往这个人账户存800 另外这个人给另外个人汇款800 按道理应该还是是1000,用线程模拟 * @param args */ static int balance = 1000; public static int operBalance(int ttl,int amt,int flag){ if(flag==0){ ttl = ttl+amt; }else if(flag==1){ ttl = ttl-amt; } return ttl; } public static void main(String[] args){ new Thread(new Runnable(){ @Override public void run() { balance = operBalance(balance,800,0); } }).start(); new Thread(new Runnable(){ @Override public void run() { balance = operBalance(balance,800,1); } }).start(); // try { // Thread.sleep(1); // } catch (InterruptedException e) { // e.printStackTrace(); // } System.out.println(balance); } }
...全文
30 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧