...
This noncompliant code example explicitly invokes run()
in the context of the current thread.
Code Block | ||
---|---|---|
| ||
public final class Foo implements Runnable {
@Override public void run() {
// ...
}
public static void main(String[] args) {
Foo foo = new Foo();
new Thread(foo).run();
}
}
|
...
This compliant solution correctly uses the start()
method to tell the Java runtimes to start a new thread.
Code Block | ||
---|---|---|
| ||
public final class Foo implements Runnable {
@Override public void run() {
// ...
}
public static void main(String[] args) {
Foo foo = new Foo();
new Thread(foo).start();
}
}
|
...
Given a Thread
object that has been constructed with a runnable argument, when invoking the Thread.run()
method, the Thread
object may be cast to Runnable
to eliminate analyzer diagnostics.
Code Block | ||
---|---|---|
| ||
public void sampleRunTest() {
Thread thread = new Thread(new Runnable() {
@Override public void run() {
// ...
}
});
((Runnable) thread).run(); // THI00-EX0: Does not start a new thread
}
|
...
Android Implementation Details
Android provides a couple of solutions for threading. The Android Developers Blog's article "Painless threading" discusses those solutions.
Bibliography
[API 2006] | Interface |