62,615
社区成员
发帖
与我相关
我的任务
分享
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class test6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Sum sum=new Sum();
for(int i=0;i<100;i++) {
new testThread(sum).start();
}
}
}
class Sum {
private int s = 1;
private long start, end;
private Lock lock=new ReentrantLock();
/**
*
*/
public Sum() {
super();
this.start = System.currentTimeMillis();
}
public int getSum() {
return s;
}
public void setSum() {
this.s = s+1;
}
public long getStart() {
return start;
}
public void setStart(long start) {
this.start = start;
}
public long getEnd() {
return end;
}
public void setEnd(long end) {
this.end = end;
}
@Override
public String toString() {
return "第" + getSum() / 100 + "个" +"100次耗时"+(end-start);
}
public void culc() {
lock.lock();
if (getSum() % 100 == 0) {
setEnd(System.currentTimeMillis());
System.out.println(toString());
setStart(System.currentTimeMillis());
}
setSum();
lock.unlock();
}
}
class testThread extends Thread{
private Sum sum;
private Lock lock=new ReentrantLock();
/**
* @param sum
*/
public testThread(Sum sum) {
super();
this.sum = sum;
}
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < 100; i++) {
sum.culc();
try {
Thread.sleep(100);//数100太快了加入了等待
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}