多线程类代码:
public class Number implements Runnable {
private String symbol;
private int num;
int data = 0;
/**
*
* @param symbol符号
* @param num数值
/
public Number(String symbol, int num) {
super();
this.symbol = symbol;
this.num = num;
}
@Override
public void run() {
synchronized (this) {
switch(symbol) {
case "+":
data += num;
break;
case "":
data *= num;
break;
case "/":
data /= num;
break;
}
System.out.println("数据源发生变化,变化后的数字是:" + data);
}
}
}
测试类代码:
public class Test {
public static void main(String[] args) {
Number num1 = new Number("+", 10); //线程1 加10
Number num2 = new Number("+", 20); //线程2 加20
Number num3 = new Number("*", 3); //线程3 乘3
Number num4 = new Number("/", 4); //线程4 除以4
new Thread(num1).start();
new Thread(num2).start();
new Thread(num3).start();
new Thread(num4).start();
}
}
控制台输出:
数据源发生变化,变化后的数字是:10
数据源发生变化,变化后的数字是:0
数据源发生变化,变化后的数字是:20
数据源发生变化,变化后的数字是:0
不知道为什么老是同步不了