多线程下操作同一个类全局变量

当一个类的全局变量在多线程情况下是如何改变

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,说明多个线程调用同一个类对象,会对全局变量有影响

你可能感兴趣的:(多线程下操作同一个类全局变量)