1.启动线程的注意事项
无论何种方式,启动一个线程,就要给它一个名字!这对排错诊断
系统监控有帮助。否则诊断问题时,无法直观知道某个线程的用途。
启动线程的试:
a.
Thread thread = new Thread("thread name") {
public void run() {
// do xxx
}
};
thread.start();
b.
public class MyThread extends Thread {
public MyThread() {
super("thread name");
}
public void run() {
// do xxx
}
}
MyThread thread = new MyThread ();
thread.start();
c.
Thread thread = new Thread() {
public void run() {
// do xxx
}
};
thread.setName("thread name");
thread.start();
d.
Thread thread = new Thread(task); // 传入任务
thread.setName(“thread name");
thread.start();
e.
Thread thread = new Thread(task, “thread name");
thread.start();
2.要响应线程中断
程序应该对线程中断作出恰当的响应。
a.
Thread thread = new Thread("interrupt test") {
public void run() {
for (;;) {
doXXX();
if (Thread.interrupted()) {
break;
}
}
}
};
thread.start();
b.
public void foo() throws InterruptedException {
if (Thread.interrupted()) {
throw new InterruptedException();
}
}
c.
Thread thread = new Thread("interrupt test") {
public void run() {
for (;;) {
try {
doXXX();
} catch (InterruptedException e) {
break;
} catch (Exception e) {
// handle Exception
}
}
}
};
thread.start();