You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Trustin Lee (JIRA)" <ji...@apache.org> on 2008/02/20 04:34:46 UTC
[jira] Resolved: (DIRMINA-523) Default thread model should be
created laziliy
[ https://issues.apache.org/jira/browse/DIRMINA-523?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Trustin Lee resolved DIRMINA-523.
---------------------------------
Resolution: Fixed
Assignee: Trustin Lee
Patch applied after some sanitization. HTH.
> Default thread model should be created laziliy
> ----------------------------------------------
>
> Key: DIRMINA-523
> URL: https://issues.apache.org/jira/browse/DIRMINA-523
> Project: MINA
> Issue Type: Improvement
> Components: Core
> Affects Versions: 1.0.8, 1.1.5, 1.0.9, 1.1.6
> Reporter: Kristjan Habicht
> Assignee: Trustin Lee
> Priority: Minor
> Fix For: 1.0.10, 1.1.7
>
>
> Currently when BaseIoServiceConfig is created then also ExecutorThreadModel is created. This creates additional 16 threads which will not be shut down even if ThreadModel.MANUAL is used.
> Here is a patch which will fix this problem by creating the ExecutorThreadModel lazily if the ThreadModel is not set.
> Index: BaseIoServiceConfig.java
> ===================================================================
> --- BaseIoServiceConfig.java (revision 616503)
> +++ BaseIoServiceConfig.java (working copy)
> @@ -40,20 +40,14 @@
> private IoFilterChainBuilder filterChainBuilder = new DefaultIoFilterChainBuilder();
>
> /**
> - * The default thread model.
> - */
> - private final ThreadModel defaultThreadModel = ExecutorThreadModel
> - .getInstance("AnonymousIoService");
> -
> - /**
> * Current thread model.
> */
> - private ThreadModel threadModel = defaultThreadModel;
> + private ThreadModel threadModel;
>
> public BaseIoServiceConfig() {
> super();
> }
> -
> +
> public IoFilterChainBuilder getFilterChainBuilder() {
> return filterChainBuilder;
> }
> @@ -75,15 +69,15 @@
> }
>
> public ThreadModel getThreadModel() {
> - return threadModel;
> + if (threadModel == null) {
> + // if thread model hasn't been set return the default one
> + return getDefaultThreadModel();
> + } else {
> + return threadModel;
> + }
> }
>
> public void setThreadModel(ThreadModel threadModel) {
> - if (threadModel == null) {
> - // We reuse the previous default model to prevent too much
> - // daemon threads are created.
> - threadModel = defaultThreadModel;
> - }
> this.threadModel = threadModel;
> }
>
> @@ -110,4 +104,11 @@
>
> return ret;
> }
> +
> + /**
> + * @return The default thread model.
> + */
> + private static ThreadModel getDefaultThreadModel() {
> + return ExecutorThreadModel.getInstance("AnonymousIoService");
> + }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.