commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <>
Subject Re: [IO] Tailer API
Date Thu, 30 Sep 2010 02:21:28 GMT
On 30 September 2010 02:58, Niall Pemberton <> wrote:
> On Thu, Sep 30, 2010 at 2:46 AM, sebb <> wrote:
>> Just wondering if the Tailer API could be simplified by performing the
>> thread start within the class?
>> Is it ever going to be useful to have direct access to tailer thread?
>> I suspect not, as the Listener should provide sufficient access.
>> It's not safe to start a thread in the constructor (unless the ctor is
>> final), but one could use static factory methods instead.
>> So instead of:
>>  TailerListener listener = ...
>>  Tailer tailer = new Tailer(file, listener, delay);
>>  Thread thread = new Thread(tailer);
>>  thread.start();
>>  ...
>>  tailer.stop()
>> one would do something like:
>>  TailerListener listener = ...
>>  Tailer tailer = Tailer.createTailer(file, listener, delay);
>>  ...
>>  tailer.stop()
>> This simplifies the API, and allows the class to force the thread to
>> be a daemon thread. It also stops the caller from messing with the
>> thread.
>> WDYT?
> There are five different Thread constructors that take a Runnable and
> a bunch of other methods that someone might want to use. I don't have
> a problem providing a convenience static method - but it only saves
> two lines of code - as long as they can construct one manually with or
> without a Thread if they want to.

But what is the use case for having access to the created thread?
Seems to me it would be a lot safer if the thread were private to the class.

It would still be possible to use the code without a thread by
exposing the method that loops over the file, and using the
constructor instead.
For example with the current code one could do something like:

TailerListener listener = ...
Tailer tailer = new Tailer(file, listener, delay);

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message