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);
}
}
分享到:
相关推荐
2. **Semaphore**:信号量,用于限制同时访问特定资源的线程数量。 3. **BlockingQueue**:阻塞队列,线程安全的数据结构,当队列为空时,取元素的线程会被阻塞,直到有元素放入;反之,当队列满时,放入元素的线程...
Java平台在J2SE 1.5版本中引入了`java.util.concurrent`包,这是一系列中等层次的并发支持类集合,通过Java社区过程(Java Community Process, JCP)的Java规范请求(Java Specification Request, JSR)166创建而成...
- **定义与作用**:`Semaphore` 类是一种控制多个线程访问共享资源的机制,它通过内部维护一个整数计数器(许可的数量)以及一组等待线程来实现。当一个线程调用 `acquire()` 方法时,如果当前可用的许可数量大于0,...
8. **Semaphore**:信号量,控制同时访问特定资源的线程数量,用来解决资源争抢问题。 9. **ThreadPoolExecutor**:线程池的具体实现,可以通过配置核心线程数、最大线程数、任务队列等参数来定制线程池的行为。 ...
在给定的文件中,`pom.xml`可能是Maven项目的配置文件,它包含了项目的依赖信息,可能包括了对`java.util.concurrent`相关库的引用。`src`目录通常包含了源代码,开发者可能在这里实现了JUC并发编程的例子,演示了...
- `Semaphore`:信号量,用于限制同时访问特定资源的线程数量。 4. **原子变量类**: - `AtomicInteger`, `AtomicLong` 等:提供原子操作的整数和长整型变量,适用于在多线程环境下实现无锁编程。 5. **锁接口和...
在Java编程领域,`java.util.concurrent`包是并发编程的核心工具包,提供了高效、线程安全的类和接口,使得开发者能够更容易地处理多线程环境。本篇将深入探讨这个包中一些鲜为人知的知识点,以帮助你提升并发编程的...
Java.util.concurrent包(虽然不是直接在Java.util下,但密切相关)包含了一系列线程安全的数据结构和并发工具,如Semaphore、ExecutorService、CountDownLatch等,极大地简化了多线程编程。 8. **枚举Set**: ...
8. **`java.util.concurrent`** 包:提供并发工具类,如`ExecutorService`、`Future`和`Semaphore`,帮助管理线程和控制并发。 9. **`java.util.Map.Entry`**:表示Map中的键值对,常用于遍历Map。 10. **`java....
8. **并发编程**:`java.util.concurrent`包虽然不在`java.util`下,但与之紧密相关,提供了高级并发工具,如ExecutorService、Future、Semaphore和CyclicBarrier。 9. **事件模型**:`java.util.EventObject`和`...
线程允许程序同时执行多个任务,而同步是控制多个线程对共享资源的访问,以避免数据不一致。并发则涉及到如何有效地管理多个线程,以最大化系统资源的利用率。 线程是操作系统分配CPU时间的基本单元。在Java中,...
例如,`ThreadPoolExecutor`可以管理一组工作线程来执行任务,而`Semaphore`和`Lock`接口提供了资源的同步和互斥访问控制。 此外,`java.util.ArrayList`和`java.util.Collections`类提供了丰富的工具方法,用于...
3. **信号量(Semaphores)和锁**:`java.util.concurrent.locks`包提供了`Semaphore`和`ReentrantLock`等同步原语,可以用来控制并发访问资源的数量。 4. **条件变量(Condition)**:`java.util.concurrent.locks...
12. **`java.util.concurrent`** 包:提供了线程安全的数据结构和并发工具类,如`ConcurrentHashMap`, `ExecutorService`, `Future`, `Semaphore`等,用于高效地进行多线程编程。 13. **`java.util.stream.Stream`*...
13. **并发编程(Concurrency)**:`java.util.concurrent`包提供了高效率的并发工具,如`ExecutorService`、`Future`、`Semaphore`等,以及原子变量类(`Atomic*`)。 通过深入学习和理解Java API,开发者可以有效...
Java多线程编程是开发高并发应用的关键技术之一,Semaphore工具是Java并发包(java.util.concurrent)中的一个重要组件,用于控制同时访问特定资源的线程数量。本篇将深入讲解Semaphore的基本概念、工作原理以及如何...
5. **网络编程**:`java.net`包提供了网络编程接口,包括`Socket`和`ServerSocket`类用于实现TCP通信,`URL`和`URLConnection`类用于访问网络资源。 6. **IO与NIO**:Java API 1.6引入了非阻塞I/O(New IO,即NIO)...
`Semaphore`是用来控制对资源访问的计数信号量。它可以用来控制多个线程对共享资源的访问数量。 **2.4.4 `Future`与`FutureTask`** `Future`接口代表一个异步计算的结果,可以通过它来获取异步任务的结果。`...
Java并发库Semaphore可以很轻松完成信号量掌握,Semaphore可以掌握某个资源可被同时访问的个数,通过acquire()猎取一个许可,假如没有就等待,而release()释放一个许可。 例如,在Windows下可以设置共享文件的最大...
8. **反射**:`java.lang.reflect`包中的类和接口提供了对运行时类信息的访问,如Class、Constructor、Method和Field等,可以动态地创建对象、调用方法、访问字段。 9. **枚举**:Java枚举是预定义常量的一种类型,...