【多线程】java多线程全局变量共享问题

本文讨论了在Java多线程环境下全局变量共享导致的问题,即多个线程访问同一变量并进行累加操作时,预期结果与实际输出不符。提出了三种解决方案:1) 使用ThreadLocal确保每个线程拥有独立的变量副本;2) 将全局变量局部化,避免线程间共享;3) 通过对象局部化,使得每个对象包含自己的全局变量,从而消除线程安全问题。
摘要由CSDN通过智能技术生成

【自己的总结】

package dc.stock;

import dc.stock.policies.StockP1_1_notComIn;


/**
 * 运行策略的【统一的】方法入口;
 * 之所以单独列出来,是为了多线程的使用;
 */
public class MainRunStockPolicy {
	
	public static void main(String[] args) {
		/*
		 * 【***全局非静态变量是属于  对象的,不同对象之间是隔离的!】
		 * 【***全局静态变量是属于     类 的,不同对象之间是共享的,但是不同类之间是隔离的】
		 * 		如果达成runnable的jar包运行,每个jar是一个进程,不同进程之间也是隔离的!
		 * 
		 * 只要类中的全局变量不是静态的,并且用如下的方法每次都new一个新的对象,
		 * 就不会出现多线程共享全局变量的问题;
		 */
		//【正确的的写法】
		/*Thread thread1 = new Thread(new StockP1_1_notComIn());
		thread1.start();
		Thread thread2 = new Thread(new StockP1_1_notComIn());
		thread2.start();*/
		
		//或者简单的写成(想要几个线程,只需要把threadNum最大值设为多少就可以):
		int threadNum = 3;
		for(int n=1;n<=threadNum;n++){
			new Thread(new StockP1_1_notComIn()).start();
		}
		
		
		
		/*
		 * 【错误的写法】
		 *  StockP1_1_notComIn t1 &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值