< prev index next >
src/java.desktop/share/classes/java/awt/doc-files/AWTThreadIssues.html
Print this page
@@ -1,7 +1,13 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8"/>
+ <title>AWT Threading Issues</title>
+</head>
<!--
- Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
@@ -21,29 +27,24 @@
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<title></title>
-</head>
-<body bgcolor=white>
+<body>
-<h1 align=center>AWT Threading Issues</h1>
+<h1>AWT Threading Issues</h1>
-<a name="ListenersThreads"></a>
+<a id="ListenersThreads"></a>
<h2>Listeners and threads</h2>
Unless otherwise noted all AWT listeners are notified on the event
dispatch thread. It is safe to remove/add listeners from any thread
during dispatching, but the changes only effect subsequent notification.
<br>For example, if a key listeners is added from another key listener, the
newly added listener is only notified on subsequent key events.
-<a name="Autoshutdown"></a>
+<a id="Autoshutdown"></a>
<h2>Auto-shutdown</h2>
According to
<cite>The Java™ Virtual Machine Specification</cite>,
sections 2.17.9 and 2.19,
@@ -82,15 +83,17 @@
<li> <code>AWTEvents</code> which were actually enqueued to a
particular <code>EventQueue</code> (note that events being
posted to the <code>EventQueue</code> can be coalesced) are
dispatched:
<ul>
- <li> Sequentially.
- <dl><dd> That is, it is not permitted that several events from
+ <li>
+ <dl><dt>Sequentially.
+ <dd> That is, it is not permitted that several events from
this queue are dispatched simultaneously. </dd></dl>
- <li> In the same order as they are enqueued.
- <dl><dd> That is, if <code>AWTEvent</code> A is enqueued
+ <li>
+ <dl><dt>In the same order as they are enqueued.
+ <dd> That is, if <code>AWTEvent</code> A is enqueued
to the <code>EventQueue</code> before
<code>AWTEvent</code> B then event B will not be
dispatched before event A.</dd></dl>
</ul>
<li> There is at least one alive non-daemon thread while there is at
@@ -166,11 +169,11 @@
On the other hand, if you require the JVM to continue running even after
the application has made all components undisplayable you should start a
non-daemon thread that blocks forever.
<pre>
- <...>
+ <...>
Runnable r = new Runnable() {
public void run() {
Object o = new Object();
try {
synchronized (o) {
@@ -181,11 +184,11 @@
}
};
Thread t = new Thread(r);
t.setDaemon(false);
t.start();
- <...>
+ <...>
</pre>
<cite>The Java™ Virtual Machine Specification</cite>
guarantees
that the JVM doesn't exit until this thread terminates.
< prev index next >