[
https://issues.apache.org/jira/browse/QPID-8533?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marek Laca updated QPID-8533:
-----------------------------
Description:
SelectorThread in Broker-J code extends Thread but it should not be used as a
thread.
SelectorThread works as a command parameter (Runnable) that is put in a new
thread:
{code:java}
SelectorThread command = new SelectorThread(scheduler, numberOfSelectors);
Thread t = new Thread(command);
{code}
There has to be exactly one SelectorThread for every
NetworkConnectionScheduler, the SelectorThread maintain a common data that are
shared among IO-threads from the scheduler thread pool. We can find the
following code in the SelectorThread:
{code:java}
Thread.currentThread().setName(_scheduler.getSelectorThreadName());
{code}
If anybody replaced previous code and set the name directly (calling the
inherited setName method) then it would be a bug and the name would not be set
to the current thread. The code lure a developer in using the methods inherited
from Thread, but these methods would not have the expected effect.
SelectorThread is not mentioned to be used as a thread and SelectorThread
should only implement Runnable interface instead of extending Thread.
was:
SelectorThread in Broker-J code extends Thread but it should not be used as a
thread.
SelectorThread works as a command parameter (Runnable) that is put in a new
thread:
{code:java}
SelectorThread command = new SelectorThread(scheduler, numberOfSelectors);
Thread t = new Thread(command);
{code}
There has to be exactly one SelectorThread for every
NetworkConnectionScheduler, the SelectorThread maintain a common data that are
share among IO-threads from the scheduler thread pool. We can find the
following code in the SelectorThread:
{code:java}
Thread.currentThread().setName(_scheduler.getSelectorThreadName());
{code}
If anybody replaced previous code and set the name directly (calling the
inherited setName method) then it would be a bug and the name would not be set
to the current thread. The code lure a developer in using the methods inherited
from Thread, but these methods would not have the expected effect.
SelectorThread is not mentioned to be used as a thread and SelectorThread
should only implement Runnable interface instead of extending Thread.
> [Broker-J] SelectorThread is not actual thread
> ----------------------------------------------
>
> Key: QPID-8533
> URL: https://issues.apache.org/jira/browse/QPID-8533
> Project: Qpid
> Issue Type: Improvement
> Components: Broker-J
> Reporter: Marek Laca
> Priority: Minor
> Labels: Broker, Java, Thread
>
> SelectorThread in Broker-J code extends Thread but it should not be used as a
> thread.
> SelectorThread works as a command parameter (Runnable) that is put in a new
> thread:
> {code:java}
> SelectorThread command = new SelectorThread(scheduler, numberOfSelectors);
> Thread t = new Thread(command);
> {code}
> There has to be exactly one SelectorThread for every
> NetworkConnectionScheduler, the SelectorThread maintain a common data that
> are shared among IO-threads from the scheduler thread pool. We can find the
> following code in the SelectorThread:
> {code:java}
> Thread.currentThread().setName(_scheduler.getSelectorThreadName());
> {code}
> If anybody replaced previous code and set the name directly (calling the
> inherited setName method) then it would be a bug and the name would not be
> set to the current thread. The code lure a developer in using the methods
> inherited from Thread, but these methods would not have the expected effect.
> SelectorThread is not mentioned to be used as a thread and SelectorThread
> should only implement Runnable interface instead of extending Thread.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]