Thread_AtomicInteger(线程安全成员变量)

package com.gzhs.zsd.thread;

import java.util.concurrent.atomic.AtomicInteger;

/*

  • 多线程里面操作变量, 该变量定义为常用成员变量(局部变量), 线程同步, 常用于多线程安全操作变量。

  • 例如: 线程A --》操作–》 AtomicInteger al–》成员变量–》 加运算–》 al++

  •      线程B --》操作--》 AtomicInteger al--》成员变量--》 减运算--》 al--
    
  • 所在包: java.util.concurrent.atomic

  • @author 谢泽鹏

  • @version 1.0
    */
    public class Thread_AtomicInteger {

    public static void main(String[] args) {

      //创建N个线程
      for(int i = 0; i < 1000; i++){
      	
      	//加运算
      	new Thread(new Runnable() {
      		@Override
      		public void run() {
      			try {
      				//线程A睡眠0.2秒
      				//Thread.sleep(200);
      				//线程B操作统一对象下成员变量al,进行加运算
      				AtomicIntegerOption.getAtomicIntegerOptionInstance().increment();
      			} catch (Exception e) {
      				e.printStackTrace();
      			}
      			
      		}
      	}).start();
      	
      	//减运算
      	new Thread(new Runnable() {
      		@Override
      		public void run() {
      			try {
      				//线程A睡眠0.2秒
      				//Thread.sleep(200);
      				//线程A操作统一对象下成员变量al,进行减运算
      				AtomicIntegerOption.getAtomicIntegerOptionInstance().decrement();
      			} catch (Exception e) {
      				e.printStackTrace();
      			}
      			
      		}
      	}).start();
      }
    

    }
    }

//数据共享类
class AtomicIntegerOption{
//单例对象
private static AtomicIntegerOption atomicIntegerOption;

//单例工厂
public static AtomicIntegerOption getAtomicIntegerOptionInstance(){
	if(null == atomicIntegerOption){
		atomicIntegerOption = new AtomicIntegerOption();
	}
		return atomicIntegerOption;
}


//定义成员变量, 在多个线程中做《加,减,剩,除》运算, 演示该变量是否保持, 线程同步
//意思: 有A线程在操作该成员变量时al时, 其他线程B必须等待, 操作完毕后, B方可操作
//意思: 线程A++运算后, 线程A--操作方可运算...
AtomicInteger al = new AtomicInteger(0);

//成员变量, 做加运算
public synchronized void increment(){
	 //System.out.println(Thread.currentThread().getName() + " al进入【加运算】 , al初始值为: " + al);
	 //System.out.println(Thread.currentThread().getName() + " al开始加处理");
	 al.getAndIncrement();
	 System.out.println(Thread.currentThread().getName() + " al做完【加运算】处理后的值为: " + al);
	 
}

//成员变量, 做减运算
public synchronized void decrement(){
	 //System.out.println(Thread.currentThread().getName() + " al进入【减运算】 , al初始值为: " + al);
	 //System.out.println(Thread.currentThread().getName() + " al开始减处理");
	 al.getAndDecrement();
	 System.out.println(Thread.currentThread().getName() + " al做完【减运算】处理后的值为: " + al);
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值