多线程中的原子类

JAVA提供了AtomicInteger,AtomicLong,AtomicReference等原子类,这些原子类有一些方法是原子方法,实例如下:
public class AtomicIntegerTest implements Runnable{
	
	private AtomicInteger i=new AtomicInteger(0);
	
	public int getValue()
	{
	      return i.get();//这是原子方法
	}
	
	
	public void evenIncrement()
	{
		i.addAndGet(2);//这是原子方法
	}
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true)
		{
			evenIncrement();
			
		}
		
	}
	
	
	public static void main(String[] args)
	{
		new Timer().schedule(new TimerTask(){
			@Override
			public void run() {
				// TODO Auto-generated method stub
				System.err.println("Aborting...");
				
				System.exit(0);
			}
		}, 5000);

		ExecutorService exec=Executors.newCachedThreadPool();
		AtomicIntegerTest ait=new AtomicIntegerTest();
		exec.execute(ait);
		while(true)
		{
			int val=ait.getValue();
			if(val%2!=0)  //运行可知道,这个地方永远不会执行
			{
				System.out.println(""+val);
				System.exit(0);
			}
		}
	}
	
	
	

	
}

你可能感兴趣的:(AtomicLong,atomicinteger)