我在Weblogic服务器上需要自定义threda;由于必须使用3d库,因此无法使用TimerEJB或Delayed MDB。
还是不鼓励?我可以使用ExecutorService
还是石英?还是我只需要考虑commonj和worker manager?
不鼓励在Weblogic 11g(EJB3.0)上创建“自己的线程执行程序”,您应该使用:
例:
MyEjb {
@Stateless
public class TimerBean implements TimerRemote {
@Resource
TimerService service;
@Override
public void startTimer() {
Timer timer = service.createTimer(1000, 1000, null);
System.out.println("Timers set");
}
@Timeout
public void handleTimeout(Timer timer) {
System.out.println("Handle timeout event here...");
}
}
如果无法使用Deleyed MDB或TimerService,则需要使用Work Manager 。
Weblogic和Websphere符合CommonJ(JSR
237
Timer&WorkManager);换句话说,他们使用公共界面与工作经理一起工作;在weblogic中,工作管理者可以调节线程(Servlet,EJB,MDB,…,自定义线程)的生命周期。
恕我直言,不要使用它,ExecutorService
因为它不受weblogic的控制:如果停止应用程序(而不是服务器),则weblogic控制的线程将停止,其他线程不应终止;我遇到了这个问题。
WebLogic Server中的WorkManager功能本质上是动态的,它根据传入请求的数量自动调整线程池大小以最大化吞吐量。要使用
WorkManager, 您可以通过commonj界面或MBean访问。
例:
InitialContext ic = new InitialContext();
commonj.work.WorkManager wm = (WorkManager);
ic.lookup(‘java:comp/env/wm/default’); // default work manager
例如,spring有一个简单的方法可以将自己的TaskExecutor附加到comonj worker manager:
<bean id="workManager" class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
<property name="workManagerName" value="java:comp/env/wm/default" />
</bean>
Quartz在应用程序服务器上工作,并且在春季,他们可以使用工作管理器
JEE7引入了批处理 (JSR
352)。Java平台API(批处理)的批处理应用程序为批处理应用程序提供了编程模型,并为调度和执行作业提供了运行时。
执行人服务
从Java规范:
Java EE 7平台中还新增了Batch API和Concurrency Utilities API,Batch
API为批处理应用程序提供了编程模型,并为调度和执行作业提供了运行时,并通过托管执行器服务,托管调度执行器提供了异步功能。 。
在JEE7中,执行服务已通过ManagedExecutorService
和扩展ManagedThreadFactory
。
例:
javax.naming.InitialContext ctx = new InitialContext();
ManagedExecutorService mes = (ManagedExecutorService)
ctx.lookup("java:comp/env/concurrent/ThreadPool");
// Create a set of tasks to perform the account retrieval.
ArrayList<Callable<MyObject>> retrieverTasks = new ArrayList<Callable<MyObject>>();
retrieverTasks.add(new MyCallable());
参见http://www.oracle.com/technetwork/java/restrictions-142267.html
SOFARPC 支持自定义业务线程池。可以为指定服务设置一个独立的业务线程池,和 SOFARPC 自身的业务线程池是隔离的。多个服务可以共用一个独立的线程池。 SOFARPC 要求自定义线程池的类型必须是 com.alipay.sofa.rpc.server.UserThreadPool。 XML 方式 如果采用 XML 的方式发布服务,可以先设定一个 class 为 com.alipay.sof
由来 在JDK中,提供了Executors用于创建自定义的线程池对象ExecutorService,但是考虑到线程池中存在众多概念,这些概念通过不同的搭配实现灵活的线程管理策略,单独使用Executors无法满足需求,构建了ExecutorBuilder。 概念 corePoolSize 初始池大小 maxPoolSize 最大池大小(允许同时执行的最大线程数) workQueue 队列,用于存在
本文向大家介绍iOS 在自定义线程上分派完成块,包括了iOS 在自定义线程上分派完成块的使用技巧和注意事项,需要的朋友参考一下 示例 无论何时使用AFNetworking,都会在AFNetworking提供的自定义线程上调度呼叫。当调用返回到完成块时,它将在主线程上执行。 本示例设置一个自定义线程,该线程分派到完成块: AFNetworking 2.xx: AFNetworking 3.xx:
我正在编写一个定制的ThreadPoolExecutor,具有以下额外功能:- > 如果有理想的线程,并且随着任务的到来,将该任务分配到队列中,而不是将其添加到队列中。 如果所有线程(最大池大小)都忙,则在新任务到来时,使用RejectionHandler的reject方法将它们添加到队列中 我已经重写了线程池执行程序的java 1.5版本的执行方法。 新守则如下:- 遗留代码如下所示:- 现在正
出于学习的目的,我正在尝试用java实现自己的线程池。下面是我已经实现的。我对这个实现有几个问题: > 虽然我像内置java一样使用BlockingQueue执行器希望我们提供Runnable对象(通过执行方法)。但在我的情况下,我觉得我可以创建任何对象而不是Runnable。那么为什么Java执行器期望Runnable,我尝试查看源代码,但还不能弄清楚。 这个原始实现还有什么问题吗? 请找到密码
我想定制剑道折线图如下: 我想在剑道折线图上显示右侧的堆积条形图。 有什么方法可以使用MVC来实现这一点吗