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是Java并发包java.util.concurrent.atomic中的一个类,提供了对单个整型变量进行原子操作的能力,避免了在多线程环境下使用synchronized关键字的复杂性和开销。本文将深入浅出地探讨AtomicInteger的...
在Java编程语言中,原子类(Atomic Classes)是并发编程中的一个重要工具,它们提供了一种在多线程环境下实现高效、安全的变量操作方式。这些类位于`java.util.concurrent.atomic`包下,能够保证在不使用锁的情况下...
在Java的并发编程中,AtomicInteger 是一个非常重要的原子类,它提供了一种无锁的机制来保证整数操作的原子性。本文将详细介绍 AtomicInteger 的工作原理、使用方法以及如何在实际项目中应用它。 AtomicInteger 是...
- **AtomicInteger原子类**:提供了一种安全的方式来更新整数值,避免了线程安全问题。 - **Semaphore同步器**:用来控制对有限数量资源的访问。 - **读写锁模式**:通过ReentrantReadWriteLock和StampedLock等类来...
Java多线程与并发处理是Java编程中的高级话题,涉及到JUC(java.util.concurrent)包中的原子类、CAS(Compare-And-Swap)机制、Unsafe类以及多线程并发的无锁方案和线程安全的实现方法。 CAS是一种无锁的同步机制...
在Java中,Atomic原子类主要有以下几种:AtomicInteger、AtomicLong、AtomicBoolean等。这些类都提供了一些原子操作方法,如get、set、incrementAndGet、decrementAndGet等。 以AtomicInteger为例,AtomicInteger...
Java AtomicInteger类是Java中提供的一种原子操作的Integer类,通过线程安全的方式操作加减。它可以在高并发情况下使用,提供原子操作来进行Integer的使用。 Atomicinteger类的使用方法 在Java中,Integer类型的...
Java AtomicInteger类是Java语言中的一种高效的原子操作类,主要用于在高并发环境下的高效程序处理。AtomicInteger类提供了一种线程安全的加减操作接口,能够帮助开发者简化同步处理。下面是对Java AtomicInteger类...
Java 原子类是Java并发编程中非常重要的工具,它们提供了一种高效且线程安全的方式来更新变量,尤其在处理共享数据时。在JDK 7及之前,共有12个原子类,而在JDK 8中,又新增了4个。下面,我们将详细介绍这些原子类...
AtomicInteger是Java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的CAS等方法实现原子操作。下面是对AtomicInteger的源码分析。 1. 什么是原子操作? 原子操作是指不会被线程调度机制...
为了确保数据在并发访问时的正确性,Java提供了一系列的原子类,包括`AtomicInteger`,它为整数类型的变量提供了线程安全的更新操作。这个话题将深入探讨`AtomicInteger`与普通`int`变量在多线程环境下进行递增操作...
本资源主要介绍了Java JUC原子类基本类型的相关知识点,包括AtomicInteger、AtomicLong、AtomicBoolean等基本类型的使用方法和原理。通过对原子操作和 일반操作的比较,了解为什么需要使用原子类,如何使用...
其次,`AtomicInteger`是Java并发库中的一个类,提供了线程安全的整数操作。在这个广告轮播中,AtomicInteger用于存储当前显示的广告页的索引。由于多个线程可能同时更新这个索引(例如,定时器和用户触摸事件),...
Java并发编程领域中的一个重要工具是`java.util.concurrent.atomic`包,这个包中包含了一系列的原子类,它们提供了无锁线程安全的编程机制。原子类的设计目标是在多线程环境下,对变量的操作能够像单线程环境一样,...
在Java中,`java.util.concurrent.atomic`包提供了多种原子类,如AtomicInteger、AtomicLong等,这些类支持原子性的增加、减小、更新等操作,避免了显式的同步锁的使用,提高了并发性能。例如,AtomicInteger的...
Java `java.util.concurrent.atomic`包提供了以下主要的原子类: 1. `AtomicBoolean`, `AtomicInteger`, `AtomicLong`: 这些类分别提供了对布尔值、整型和长整型的原子操作。它们提供了`get()`, `set()`, `compare...
Java的并发模型就是基于线程的,它利用了Java内存模型(JMM)和特定的并发工具类,如`synchronized`关键字、`volatile`变量以及`java.util.concurrent.atomic`包下的原子类,来确保线程安全。 `java.util....
Java中提供了`java.util.concurrent.atomic`包,该包包含了一系列的原子类,如AtomicInteger、AtomicLong、AtomicReference等。这些类提供的原子操作主要基于硬件层面的CAS(Compare and Swap,比较并交换)指令来...
AtomicInteger示例AtomicInteger用于原子增量计数器之类的应用程序。 简短的示例代码: public class AtomicIntegerExample { private final ExecutorService execService = Executors . newFixedThreadPool( 100 );...