package thread;
/*
* 计算j的值
*/
public class Calculate_value_j {
public static void main(String[] args) {
OperateNum opnum=new OperateNum();
for(int i=0;i<2;i++) {
new AddThread(opnum).start();
new Thread(new SubThread(opnum)).start();
}
}
}
/*
* 计算数值的类
*/
class OperateNum{
int j=0;
public void add() {
synchronized (OperateNum.class) {
j++;
System.out.println(Thread.currentThread().getName()+"add j="+j);
}
}
public void sub() {
synchronized (OperateNum.class) {
j--;
System.out.println(Thread.currentThread().getName()+"sub j="+j);
}
}
}
/*
* 增加数值的线程
*/
class AddThread extends Thread {
OperateNum opnum=null;
public AddThread(OperateNum opnum) {
this.opnum=opnum;
}
@Override
public void run() {
for(int i=0;i<10;i++) {
opnum.add();
}
}
}
/*
* 减少数值的线程
*/
class SubThread implements Runnable{
OperateNum opnum=null;
public SubThread(OperateNum opnum){
this.opnum=opnum;
}
@Override
public void run() {
for(int i=0;i<10;i++) {
opnum.sub();
}
}
}
多线程计算j的值
于 2021-11-21 19:37:05 首次发布