WEB开发网
开发学院软件开发Java 使用 WebSphere Application Server 开发高性能 J... 阅读

使用 WebSphere Application Server 开发高性能 J2EE 线程

 2009-09-30 00:00:00 来源:WEB开发网   
核心提示: 如果将WorkManager 用作全局线程池(图 2),则每次向线程分配工作时,使用 WebSphere Application Server 开发高性能 J2EE 线程(2),提交给线程池的每项工作都将具有应用于线程(或从线程中删除)的应用程序上下文:将工作提交给 WorkManager 线程

使用 WebSphere Application Server 开发高性能 J2EE 线程

如果将WorkManager 用作全局线程池(图 2),则每次向线程分配工作时,提交给线程池的每项工作都将具有应用于线程(或从线程中删除)的应用程序上下文:

将工作提交给 WorkManager 线程池(蓝框)

获取 J2EE 应用程序上下文的快照,并将其作为 WWEC 对象与该工作存储在一起。

将 WWEC 添加到池的输入队列。

工作线程从输入队列提取一个 WWEC,并运行它。

获取工作线程上当前 J2EE 应用程序上下文的快照,以便在工作完成之后进行恢复。

将与 WWEC 一起存储的 J2EE 上下文应用到线程。

运行工作。

从线程删除 J2EE 上下文,并重新应用以前的上下文。

工作线程现在等待更多工作出现在输入队列上。

图 2. 与 WorkManager 共享的全局线程池

使用 WebSphere Application Server 开发高性能 J2EE 线程

图片看不清楚?请点击这里查看原图(大图)。

组件范围的线程池

如果线程池仅由单个应用程序或组件(如 Servlet 或 EJB)使用,并且要提交的工作可以容许单一通用的 J2EE 上下文标识,那么将自定义线程池与线程工厂一起使用可以显著提高性能。这是组件范围的线程池。

组件范围的线程池线程都将共享创建它的应用程序组件的 J2EE 上下文。例如,如果由启动 Bean 创建一个线程池,则每个线程将包含启动 Bean 的 start() 方法的上下文,并且每个线程的行为就好像在该启动 Bean 的范围中运行一样。因此,启动 Bean 是线程池实例的所有者。不论提交工作的 Servlet 或 EJB 如何,所有业务逻辑都将在 java:comp 命名空间和启动 Bean 的 start() 方法的安全上下文中运行。

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 WebSphere Application

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接