From: Miles Sabin <msabin@cromwellmedia.co.uk>
To: java-discuss@sourceware.cygnus.com
Subject: RE: Thread.interrupt()
Date: Sat, 01 Apr 2000 00:00:00 -0000 [thread overview]
Message-ID: <AA4C152BA2F9D211B9DD0008C79F760A95D716@odin.cromwellmedia.co.uk> (raw)
Message-ID: <20000401000000.rvAqvyh03uV7UEIoCgt9x0R-4n4AdXTjwLvR53CjX9Y@z> (raw)
Jeff Sturm wrote,
> IOW, Sun crippled their API because Win32 doesn't handle
> interruptable I/O portably. Not a good policy.
>
> Since Java doesn't support read() with timeouts either, it is
> easy to create a "stuck" thread that can never die.
The following posting of Doug Lea's on this topic from a while
back on the advanced-java list is the best response to your
complaint ...
Doug Lea wrote,
> I think the consensus is that Interruptible I/O was a
> reasonable-looking notion that turned out to be a bad idea in
> practice. In fact, I hope it becomes deprecated before it is
> fully implemented. (Currently, it is very incompletely
> implemented, at least on Solaris and Win platforms.) The
> fundamental problem is that there is rarely a reasonable
> continuation action that can be taken if low-level I/O
> interrupts. Most Java programs use buffered or translated
> I/O classes, which in turn rely on lower-level I/O classes.
> But there is hardly ever a way for them to roll back or
> forward under a lower level exception. So the only recourse
> is to abort.
>
> Given this (see http://gee.cs.oswego.edu/dl/cpj/cancel.html ),
> usually the best way to implement cancellation in I/O is just
> resource revocation -- asynchronously forcibly closing the
> stream that the thread is operating on. This results in a
> generic I/O exception, which can then be used to shut down a
> thread. This works well (at least on Solaris 1.2. I don't
> know about other platforms). To play it safe, and force
> termination whether the thread is actually doing any I/O, you
> should normally do both stream.close() and Thread.interrupt
> ().
Cheers,
Miles
--
Miles Sabin Cromwell Media
Internet Systems Architect 5/6 Glenthorne Mews
+44 (0)20 8817 4030 London, W6 0LJ, England
msabin@cromwellmedia.com http://www.cromwellmedia.com/
next reply other threads:[~2000-04-01 0:00 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-03-14 6:00 Miles Sabin [this message]
2000-03-14 7:36 ` Thread.interrupt() Jeff Sturm
2000-03-14 10:58 ` Thread.interrupt() Tom Tromey
2000-04-01 0:00 ` Thread.interrupt() Tom Tromey
2000-04-01 0:00 ` Thread.interrupt() Jeff Sturm
2000-04-01 0:00 ` Thread.interrupt() Miles Sabin
2000-03-14 7:47 Thread.interrupt() Miles Sabin
2000-04-01 0:00 ` Thread.interrupt() Miles Sabin
2000-03-14 9:57 Thread.interrupt() Boehm, Hans
2000-03-14 10:52 ` Thread.interrupt() Tom Tromey
2000-04-01 0:00 ` Thread.interrupt() Tom Tromey
2000-03-14 15:59 ` Thread.interrupt() Jesper Peterson
2000-04-01 0:00 ` Thread.interrupt() Jesper Peterson
2000-04-01 0:00 ` Thread.interrupt() Boehm, Hans
2000-03-14 11:26 Thread.interrupt() Boehm, Hans
2000-04-01 0:00 ` Thread.interrupt() Boehm, Hans
2000-03-14 16:30 Thread.interrupt() Boehm, Hans
2000-03-14 17:17 ` Thread.interrupt() Jesper Peterson
2000-03-14 17:27 ` Thread.interrupt() Tom Tromey
2000-04-01 0:00 ` Thread.interrupt() Tom Tromey
2000-04-01 0:00 ` Thread.interrupt() Jesper Peterson
2000-04-01 0:00 ` Thread.interrupt() Boehm, Hans
2000-03-15 5:51 Thread.interrupt() Miles Sabin
2000-04-01 0:00 ` Thread.interrupt() Miles Sabin
2000-03-15 11:38 Thread.interrupt() Boehm, Hans
2000-04-01 0:00 ` Thread.interrupt() Boehm, Hans
2000-03-15 11:57 Thread.interrupt() Miles Sabin
2000-04-01 0:00 ` Thread.interrupt() Miles Sabin
2000-03-15 12:55 Thread.interrupt() Boehm, Hans
2000-04-01 0:00 ` Thread.interrupt() Boehm, Hans
2000-03-15 13:06 Thread.interrupt() Miles Sabin
2000-04-01 0:00 ` Thread.interrupt() Miles Sabin
2000-03-15 13:52 Thread.interrupt() Boehm, Hans
2000-04-01 0:00 ` Thread.interrupt() Boehm, Hans
2000-03-16 4:08 Thread.interrupt() Miles Sabin
2000-04-01 0:00 ` Thread.interrupt() Miles Sabin
2000-04-01 0:00 Thread.interrupt() Bryce McKinlay
2000-03-13 13:33 ` Thread.interrupt() Bryce McKinlay
2000-03-14 2:24 ` Thread.interrupt() Kresten Krab Thorup
2000-03-14 3:26 ` Thread.interrupt() Bryce McKinlay
2000-04-01 0:00 ` Thread.interrupt() Bryce McKinlay
2000-03-14 5:52 ` Thread.interrupt() Jeff Sturm
2000-03-14 11:02 ` Thread.interrupt() Tom Tromey
2000-04-01 0:00 ` Thread.interrupt() Tom Tromey
2000-03-14 14:16 ` Thread.interrupt() Bryce McKinlay
2000-03-14 16:09 ` Thread.interrupt() Godmar Back
2000-04-01 0:00 ` Thread.interrupt() Godmar Back
2000-04-01 0:00 ` Thread.interrupt() Bryce McKinlay
2000-04-01 0:00 ` Thread.interrupt() Jeff Sturm
2000-04-01 0:00 ` Thread.interrupt() Kresten Krab Thorup
2000-04-01 0:00 ` Thread.interrupt() Bryce McKinlay
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=AA4C152BA2F9D211B9DD0008C79F760A95D716@odin.cromwellmedia.co.uk \
--to=msabin@cromwellmedia.co.uk \
--cc=java-discuss@sourceware.cygnus.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).