[
https://issues.apache.org/jira/browse/IO-116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12477848
]
Holger Hoffstätte commented on IO-116:
--------------------------------------
Hi,
ich fürchte wir reden total aneinander vorbei :)
Ich weiß schon wie der FileTracker funktioniert, und auch daß er als
"Dienst" eine etwas andere Rolle spielen darf als z.B. die üblichen
statischen Helfer-Methoden. Gerade aber weil er nur ab und zu laufen muß,
ist es ein guter Kandidat für einen Timer - weil z.B. eine Webapp ja auch
garantiert noch andere Dinge zu tun hat, und es wäre sicherlich einfacher,
nur einen Timer pro Webapp für alle periodischen Dinge zu benutzen/zu
kontrollieren als x verschiedene Mechanismen.
Worauf ich hinauswollte: Bibliotheken (im Gegensatz zu Frameworks) "an
sich" sollten eben überhaupt gar keine Threads starten - weil das sonst
eben genau darauf hinausläuft, daß jede Klasse ihr Thread-Handling selbst
neu stricken muß, mit ClassLoader-leaks und dem ganzen Klimbim.
Es gibt unzählige Verwendungen für asynchrone Objekte in Collections, IO,
Lang, Pool, DBCP usw. und obwohl eigentlich nur 1-2 gebraucht würden um
die Arbeit zu erledigen hätte man am Ende mehrere hundert Threads laufen,
nur weil wieder keiner über APIs und Komposition/Zusammenspiel im größeren
Rahmen nachgedacht hat. Wenn ich in meiner App z.B. 100 kleine Pools habe,
die sich alle 5 Minuten periodisch selbst säubern können, brauche ich
dafür wirklich keine 100 Threads, die 99.99% der Zeit einfach nichts tun.
Mein Kommentar war lediglich als kleiner Denkanstoß für commons allgemein
gedacht.
ciao
Holger
> Replace static FileCleaner methods
> ----------------------------------
>
> Key: IO-116
> URL: https://issues.apache.org/jira/browse/IO-116
> Project: Commons IO
> Issue Type: Improvement
> Components: Utilities
> Affects Versions: 1.3.1
> Reporter: Jochen Wiedmann
> Priority: Critical
> Fix For: 1.4
>
> Attachments: commons-io-filecleaningtracker.patch
>
>
> The attached patch aims to finally resolve the problems, which are named in
> IO-99, FILEUPLOAD-120, and FILEUPLOAD-125.
> I choosed a conservative strategy: Basically I copied the FileCleaner class
> to an instantiable class FileCleaningTracker with instance methods. The
> static FileCleaner methods are now implemented by a static instance of
> FileCleaningTracker. (The name FileCleaningTracker is, of course,
> questionable.
> The FileCleaningTestCase was also created by simply copying FileCleaner to
> FileCleaningTestCase. FileCleanerTestCase is now similarly implemented as a
> subclass of FileCleanerTestCase which uses the static instance of FileCleaner
> rather than a dynamically created instance.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]