`
itace
  • 浏览: 180571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

AtomicInteger原子类

 
阅读更多

 

 

public class ThreadPool {

	private static ExecutorService threadPool = null;
	private static int corePoolSize=10;//始终有corePoolSize个线程在执行(waiting状态)
	private static int maximumPoolSize=100;//taskthread数量超过maximumPoolSize,可能会有如干个辅助线程,状态为TIMED_WAITING
	private static long keepAliveTime=15;//线程池活跃时间,是毫秒,秒还是分取决于TimeUnit*
	private static TimeUnit unit=TimeUnit.SECONDS;
	
	public static ExecutorService getThreadPool(){
		if(threadPool==null){
			BlockingQueue<Runnable> workQueue=new ArrayBlockingQueue<Runnable>(maximumPoolSize, false);//如果为 false,则访问顺序是不确定的
			CallerRunsPolicy handler=new ThreadPoolExecutor.CallerRunsPolicy();
			threadPool=new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, handler);
		}
		return threadPool;
	}
	
}

 

 

 

public class TaskCallable implements Callable<Integer> {

	private AtomicInteger ai;
	
	
	public TaskCallable(AtomicInteger ai) {
		this.ai = ai;
	}
	
	public Integer call() throws Exception {
		int a = ai.incrementAndGet();
		System.out.println(Thread.currentThread().getName()+"==="+a);
//		System.out.println(a+"---");
		return a;
	}
}

 

public static void main(String[] args) {
		AtomicInteger ai = new AtomicInteger(0);
		ExecutorService threadPool = ThreadPool.getThreadPool();
		for (int i = 0; i < 10; i++) {
//			TaskCallable tc = new TaskCallable(ai);
			TaskCallable tc = new TaskCallable(ai);
			
			Future<Integer> future = threadPool.submit(tc);
			try {
				System.out.println(future.get());
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}

 

 

print:

pool-1-thread-1===1
1
pool-1-thread-2===2
2
pool-1-thread-3===3
3
pool-1-thread-4===4
4
pool-1-thread-5===5
5
pool-1-thread-6===6
6
pool-1-thread-7===7
7
pool-1-thread-8===8
8
pool-1-thread-9===9
9
pool-1-thread-10===10
10

 

分享到:
评论

相关推荐

    AtomicInteger 浅谈

    AtomicInteger是Java并发包java.util.concurrent.atomic中的一个类,提供了对单个整型变量进行原子操作的能力,避免了在多线程环境下使用synchronized关键字的复杂性和开销。本文将深入浅出地探讨AtomicInteger的...

    原子类测试

    在Java编程语言中,原子类(Atomic Classes)是并发编程中的一个重要工具,它们提供了一种在多线程环境下实现高效、安全的变量操作方式。这些类位于`java.util.concurrent.atomic`包下,能够保证在不使用锁的情况下...

    Java中的原子操作:深入探索AtomicInteger的实现与应用

    在Java的并发编程中,AtomicInteger 是一个非常重要的原子类,它提供了一种无锁的机制来保证整数操作的原子性。本文将详细介绍 AtomicInteger 的工作原理、使用方法以及如何在实际项目中应用它。 AtomicInteger 是...

    软件工程中的并发与并行计算.pptx

    - **AtomicInteger原子类**:提供了一种安全的方式来更新整数值,避免了线程安全问题。 - **Semaphore同步器**:用来控制对有限数量资源的访问。 - **读写锁模式**:通过ReentrantReadWriteLock和StampedLock等类来...

    Java 多线程与并发(8-26)-JUC原子类- CAS, Unsafe和原子类详解.pdf

    Java多线程与并发处理是Java编程中的高级话题,涉及到JUC(java.util.concurrent)包中的原子类、CAS(Compare-And-Swap)机制、Unsafe类以及多线程并发的无锁方案和线程安全的实现方法。 CAS是一种无锁的同步机制...

    深入了解Java atomic原子类的使用方法和原理

    在Java中,Atomic原子类主要有以下几种:AtomicInteger、AtomicLong、AtomicBoolean等。这些类都提供了一些原子操作方法,如get、set、incrementAndGet、decrementAndGet等。 以AtomicInteger为例,AtomicInteger...

    Java AtomicInteger类的使用方法详解

    Java AtomicInteger类是Java中提供的一种原子操作的Integer类,通过线程安全的方式操作加减。它可以在高并发情况下使用,提供原子操作来进行Integer的使用。 Atomicinteger类的使用方法 在Java中,Integer类型的...

    Java AtomicInteger类使用方法实例讲解

    Java AtomicInteger类是Java语言中的一种高效的原子操作类,主要用于在高并发环境下的高效程序处理。AtomicInteger类提供了一种线程安全的加减操作接口,能够帮助开发者简化同步处理。下面是对Java AtomicInteger类...

    Java16个原子类介绍-基于JDK8.docx

    Java 原子类是Java并发编程中非常重要的工具,它们提供了一种高效且线程安全的方式来更新变量,尤其在处理共享数据时。在JDK 7及之前,共有12个原子类,而在JDK 8中,又新增了4个。下面,我们将详细介绍这些原子类...

    java并发之AtomicInteger源码分析

    AtomicInteger是Java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的CAS等方法实现原子操作。下面是对AtomicInteger的源码分析。 1. 什么是原子操作? 原子操作是指不会被线程调度机制...

    Java中对AtomicInteger和int值在多线程下递增操作的测试

    为了确保数据在并发访问时的正确性,Java提供了一系列的原子类,包括`AtomicInteger`,它为整数类型的变量提供了线程安全的更新操作。这个话题将深入探讨`AtomicInteger`与普通`int`变量在多线程环境下进行递增操作...

    java并发编程专题(十)----(JUC原子类)基本类型详解

    本资源主要介绍了Java JUC原子类基本类型的相关知识点,包括AtomicInteger、AtomicLong、AtomicBoolean等基本类型的使用方法和原理。通过对原子操作和 일반操作的比较,了解为什么需要使用原子类,如何使用...

    ViewPager+AtomicInteger实现广告轮播

    其次,`AtomicInteger`是Java并发库中的一个类,提供了线程安全的整数操作。在这个广告轮播中,AtomicInteger用于存储当前显示的广告页的索引。由于多个线程可能同时更新这个索引(例如,定时器和用户触摸事件),...

    JUC–Atomic原子类

    Java并发编程领域中的一个重要工具是`java.util.concurrent.atomic`包,这个包中包含了一系列的原子类,它们提供了无锁线程安全的编程机制。原子类的设计目标是在多线程环境下,对变量的操作能够像单线程环境一样,...

    java多线程中的原子操作

    在Java中,`java.util.concurrent.atomic`包提供了多种原子类,如AtomicInteger、AtomicLong等,这些类支持原子性的增加、减小、更新等操作,避免了显式的同步锁的使用,提高了并发性能。例如,AtomicInteger的...

    Java多线程Atomic包操作原子变量与原子类详解

    Java `java.util.concurrent.atomic`包提供了以下主要的原子类: 1. `AtomicBoolean`, `AtomicInteger`, `AtomicLong`: 这些类分别提供了对布尔值、整型和长整型的原子操作。它们提供了`get()`, `set()`, `compare...

    Java多线程之进阶篇(二).docx

    Java的并发模型就是基于线程的,它利用了Java内存模型(JMM)和特定的并发工具类,如`synchronized`关键字、`volatile`变量以及`java.util.concurrent.atomic`包下的原子类,来确保线程安全。 `java.util....

    聊聊并发(5)原子操作的实现原理Java开发Java经验技

    Java中提供了`java.util.concurrent.atomic`包,该包包含了一系列的原子类,如AtomicInteger、AtomicLong、AtomicReference等。这些类提供的原子操作主要基于硬件层面的CAS(Compare and Swap,比较并交换)指令来...

    AtomicIntegerExample:AtomicInteger示例

    AtomicInteger示例AtomicInteger用于原子增量计数器之类的应用程序。 简短的示例代码: public class AtomicIntegerExample { private final ExecutorService execService = Executors . newFixedThreadPool( 100 );...

Global site tag (gtag.js) - Google Analytics