编写程序实现如下功能:一个线程进行如下运算:1*2+2*3+3*4+……+199*200;另一个线程每隔一段时间读取前一个线程运算结果。
我的代码如下:- class Resource
- {
- private long sum=0;
- private int i=1;
- public void setSum(long sum)
- {
- this.sum=sum;
- }
- public long getSum()
- {
- return sum;
- }
- public void setI(int i)
- {
- this.i=i;
- }
- public int getI()
- {
- return i;
- }
- }
- class Yunsuan implements Runnable
- {
- private Resource res;
- Yunsuan(Resource res)
- {
- this.res=res;
- }
- public void run()
- {
- long temp=0;
- for (int i=1;i<200 ;i++ )
- {
- temp += i*(i+1);
- res.setSum(temp);
- try
- {
- Thread.sleep(10);
- }
- catch (InterruptedException e)
- {
- }
- res.setI(res.getI()+1);
- }
- }
- }
- class Huoqu implements Runnable
- {
- private Resource res;
- Huoqu(Resource res)
- {
- this.res=res;
- }
-
- public void run()
- {
- while (res.getI()<200)
- {
- System.out.println(res.getSum());
- try
- {
- Thread.sleep(10);
- }
- catch (InterruptedException e)
- {
- }
- }
-
- }
- }
- class YunsuanTest
- {
- public static void main(String[] args)
- {
- Resource res=new Resource();
- Yunsuan y = new Yunsuan(res);
- Huoqu h=new Huoqu(res);
- Thread t1 = new Thread(y);
- Thread t2 = new Thread(h);
- t1.start();
- t2.start();
-
- }
- }
复制代码 能够成功运行,不知道是否会发生安全问题,另外如何能避免发生读取了相同数据的情况?
还有一个问题是:感觉代码过长,有木有办法可以优化一下? |