`

采用java.util.concurrent.Semaphore 类实现对资源限制访问量

阅读更多
package com.citicbank.vipfund.webapp.utilTest;

import java.util.concurrent.Semaphore;

import com.citicbank.vipfund.webapp.util.PortfolioUtils;

/**
 * @author jgao1 用法:PortfolioManager
 *         portfolioManager=PortfolioManager.getInstance();
 *         portfolioManager.calculateMvoByXMLString(configXml,inputXml);
 */
public class PortfolioManager {

	private static PortfolioManager instance; // 唯一实例
	private static Semaphore semp = null;

	/**
	 * 单例模式建构私有函数以防止其它对象创建本类实例
	 */
	private PortfolioManager() {
		semp = new Semaphore(10);// 设置互斥的访问个数
	}

	/**
	 * 采用单例模式,返回唯一实例.如果是第一次调用此方法,则创建实例
	 * 
	 * @return 唯一实例
	 */
	public static synchronized PortfolioManager getInstance() {
		if (instance == null) {
			instance = new PortfolioManager();
		}
		return instance;
	}

	public String getCalculateMvoByXMLString(String configXml, String inputXml) {
		try {
			semp.acquire();
			return calculateMvoByXMLString(configXml, inputXml);
		} catch (InterruptedException e) {
			return null;
		} finally {
			semp.release();
		}
	}

	/**
	 * 计算MVO
	 * 
	 * @param configXml
	 * @param inputXml
	 * @param timOut
	 * @return
	 */
	public String calculateMvoByXMLString(String configXml,
			String inputXml) {
		return PortfolioUtils.calculateMvoByXMLString(configXml, inputXml);
	}
}

 

分享到:
评论

相关推荐

    java.util.concurrent 学习ppt

    2. **Semaphore**:信号量,用于限制同时访问特定资源的线程数量。 3. **BlockingQueue**:阻塞队列,线程安全的数据结构,当队列为空时,取元素的线程会被阻塞,直到有元素放入;反之,当队列满时,放入元素的线程...

    The java.util.concurrent Synchronizer Framework

    Java平台在J2SE 1.5版本中引入了`java.util.concurrent`包,这是一系列中等层次的并发支持类集合,通过Java社区过程(Java Community Process, JCP)的Java规范请求(Java Specification Request, JSR)166创建而成...

    java.util.concurrent_您不知道的5件事

    - **定义与作用**:`Semaphore` 类是一种控制多个线程访问共享资源的机制,它通过内部维护一个整数计数器(许可的数量)以及一组等待线程来实现。当一个线程调用 `acquire()` 方法时,如果当前可用的许可数量大于0,...

    java并发工具包 java.util.concurrent中文版-带书签版

    8. **Semaphore**:信号量,控制同时访问特定资源的线程数量,用来解决资源争抢问题。 9. **ThreadPoolExecutor**:线程池的具体实现,可以通过配置核心线程数、最大线程数、任务队列等参数来定制线程池的行为。 ...

    java.util.concurrent 测试源文件

    在给定的文件中,`pom.xml`可能是Maven项目的配置文件,它包含了项目的依赖信息,可能包括了对`java.util.concurrent`相关库的引用。`src`目录通常包含了源代码,开发者可能在这里实现了JUC并发编程的例子,演示了...

    java.util.concurrent介绍(重要).pdf

    - `Semaphore`:信号量,用于限制同时访问特定资源的线程数量。 4. **原子变量类**: - `AtomicInteger`, `AtomicLong` 等:提供原子操作的整数和长整型变量,适用于在多线程环境下实现无锁编程。 5. **锁接口和...

    关于 java.util.concurrent 您不知道的 5 件事,第 2 部分

    在Java编程领域,`java.util.concurrent`包是并发编程的核心工具包,提供了高效、线程安全的类和接口,使得开发者能够更容易地处理多线程环境。本篇将深入探讨这个包中一些鲜为人知的知识点,以帮助你提升并发编程的...

    JBuider第七章:Java.util包.rar

    Java.util.concurrent包(虽然不是直接在Java.util下,但密切相关)包含了一系列线程安全的数据结构和并发工具,如Semaphore、ExecutorService、CountDownLatch等,极大地简化了多线程编程。 8. **枚举Set**: ...

    30个常用java工具类

    8. **`java.util.concurrent`** 包:提供并发工具类,如`ExecutorService`、`Future`和`Semaphore`,帮助管理线程和控制并发。 9. **`java.util.Map.Entry`**:表示Map中的键值对,常用于遍历Map。 10. **`java....

    java.util源码-java-util:javautil源代码

    8. **并发编程**:`java.util.concurrent`包虽然不在`java.util`下,但与之紧密相关,提供了高级并发工具,如ExecutorService、Future、Semaphore和CyclicBarrier。 9. **事件模型**:`java.util.EventObject`和`...

    java Thread & synchronized & concurrent 线程、同步、并发

    线程允许程序同时执行多个任务,而同步是控制多个线程对共享资源的访问,以避免数据不一致。并发则涉及到如何有效地管理多个线程,以最大化系统资源的利用率。 线程是操作系统分配CPU时间的基本单元。在Java中,...

    Java常用类总结

    例如,`ThreadPoolExecutor`可以管理一组工作线程来执行任务,而`Semaphore`和`Lock`接口提供了资源的同步和互斥访问控制。 此外,`java.util.ArrayList`和`java.util.Collections`类提供了丰富的工具方法,用于...

    工作在同一个java虚拟机中的线程能实现消息互发(alpha)

    3. **信号量(Semaphores)和锁**:`java.util.concurrent.locks`包提供了`Semaphore`和`ReentrantLock`等同步原语,可以用来控制并发访问资源的数量。 4. **条件变量(Condition)**:`java.util.concurrent.locks...

    java常用工具类

    12. **`java.util.concurrent`** 包:提供了线程安全的数据结构和并发工具类,如`ConcurrentHashMap`, `ExecutorService`, `Future`, `Semaphore`等,用于高效地进行多线程编程。 13. **`java.util.stream.Stream`*...

    JavaAPI(官方英文版)

    13. **并发编程(Concurrency)**:`java.util.concurrent`包提供了高效率的并发工具,如`ExecutorService`、`Future`、`Semaphore`等,以及原子变量类(`Atomic*`)。 通过深入学习和理解Java API,开发者可以有效...

    Java多线程Semaphore工具的使用详解.rar

    Java多线程编程是开发高并发应用的关键技术之一,Semaphore工具是Java并发包(java.util.concurrent)中的一个重要组件,用于控制同时访问特定资源的线程数量。本篇将深入讲解Semaphore的基本概念、工作原理以及如何...

    javaAPI1.6

    5. **网络编程**:`java.net`包提供了网络编程接口,包括`Socket`和`ServerSocket`类用于实现TCP通信,`URL`和`URLConnection`类用于访问网络资源。 6. **IO与NIO**:Java API 1.6引入了非阻塞I/O(New IO,即NIO)...

    java的concurrent用法详解

    `Semaphore`是用来控制对资源访问的计数信号量。它可以用来控制多个线程对共享资源的访问数量。 **2.4.4 `Future`与`FutureTask`** `Future`接口代表一个异步计算的结果,可以通过它来获取异步任务的结果。`...

    JAVA多线程--信号量(Semaphore)_.docx

    Java并发库Semaphore可以很轻松完成信号量掌握,Semaphore可以掌握某个资源可被同时访问的个数,通过acquire()猎取一个许可,假如没有就等待,而release()释放一个许可。 例如,在Windows下可以设置共享文件的最大...

    整理的若干java常用工具类

    8. **反射**:`java.lang.reflect`包中的类和接口提供了对运行时类信息的访问,如Class、Constructor、Method和Field等,可以动态地创建对象、调用方法、访问字段。 9. **枚举**:Java枚举是预定义常量的一种类型,...

Global site tag (gtag.js) - Google Analytics