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

本文探讨了在多线程环境下,类的全局变量如何被不同线程访问和修改。通过两个实例展示了当两个线程使用不同类对象时,全局变量互不影响;而当多个线程共享同一类对象时,可能出现并发问题,导致数据不一致。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值