java线程问题,如何修改代码,让程序能够正常输出如下结果?
package com.elyong.whatsup;
/**
* Created by ely ong on 2017/12/5.
*/
public class TestThreads{
public static void main(String[] args){
ThreadOne t1=new ThreadOne();
ThreadTwo t2=new ThreadTwo();
Thread one=new Thread(t1);
Thread two=new Thread(t2);
one.start();
two.start();
}
}
class Accum{
private static Accum a=new Accum();
private int counter=0;
private Accum(){}
public static Accum getAccum(){
return a;
}
public void updateCounter(int add){
counter+=add;
}
public int getCount(){
return counter;
}
}
class ThreadOne implements Runnable{
Accum a=Accum.getAccum();
public void run(){
for(int x=0;x<98;x++){
a.updateCounter(1000);
try{
Thread.sleep(50);
}catch (InterruptedException ex){}
}
System.out.println("one "+a.getCount());
}
}
class ThreadTwo implements Runnable{
Accum a=Accum.getAccum();
public void run(){
for(int x=0;x<99;x++){
a.updateCounter(1);
try{
Thread.sleep(50);
}catch (InterruptedException ex){}
}
System.out.println("two "+a.getCount());
}
}
输出结果:
one 98098
two 98099
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
参考楼上,给出我的两种实现。看起来没那么高大上,但是好理解一些。
实现1:
实现二:
利用并发辅助类试一试。