实验volatile的作用
如果结果保持不变才起到了同步的作用,否则就存在线程安全问题.
package org.coffeesweet.test01;
public class Test03 {
private volatile int a=20;
public static void main(String...args) throws InterruptedException{
Test03 t03=new Test03();
Thread ta=t03.new A("a");
Thread tb=t03.new B("b");
// new Thread(t03.new A(),"a");
System.out.println("a---start:"+t03.a);
ta.start();
tb.start();
ta.join();
tb.join();
System.out.println("a---end:"+t03.a);
}
private class A extends Thread{
public A(){
super();
}
public A(String name){
super(name);
}
public void addA(){
for(int i=0;i<100000;i++)
a=a+1;
}
@Override
public void run() {
System.out.println("execute:A:start:"+a);
addA();
System.out.println("execute:A:end:"+a);
}
}
private class B extends Thread{
public B(){
super();
}
public B(String name){
super(name);
}
public void minusA(){
for(int i=0;i<100000;i++)
a=a-1;
}
@Override
public void run() {
System.out.println("execute:B:start:"+a);
minusA();
System.out.println("execute:B:end:"+a);
}
}
}