当一个类的全局变量在多线程情况下是如何改变
1.当两个线程调用不同的tickt类对象时,通过结果看程序互不影响
public class Test818 {
public static void main(String[] args) throws InterruptedException {
tickt t1 = new tickt();
new Thread(t1).start();
tickt t2 = new tickt();
new Thread(t2).start();
}
}
class tickt implements Runnable{
public int count = 100;
@Override
public void run() {
count--;
System.out.println(Thread.currentThread().getName()+":还剩下"+count+"张票");
}
}
运行结果:
Thread-1:还剩下99张票
Thread-0:还剩下99张票
2,当调用同一个类对象时
public class Test818 {
public static void main(String[] args) throws InterruptedException {
tickt t1 = new tickt();
new Thread(t1).start();
new Thread(t1).start();
}
}
class tickt implements Runnable{
public int count = 100;
@Override
public void run() {
count--;
System.out.println(Thread.currentThread().getName()+":还剩下"+count+"张票");
}
}
运行结果:
Thread-1:还剩下98张票
Thread-0:还剩下98张票
其中一个线程应该是输出99的,但是还是读取到了另外一个线程改变的数据,但是运行多次都会有一个98,说明多个线程调用同一个类对象,会对全局变量有影响