1. Thread.sleep(long millis): 休眠制定的毫秒数。
2. 实现多线程的两种方法
2.1 实现Runnable接口
class BallRunnable implements Runnable {
public void run() { //需要try..catch来捕获异常
try{
do something
} catch (InterruptedException) {}
}
}
2.2 继承Thread
class MyThread extends Thread {
public void run() {task code}
}
2.3 启动线程
Ball b = new Ball();
panel.add(b);
Runnable r = new BallRunnable(b, panel);
Thread t = new Thread(r);
t.start();
不要调用Thread类或者Runnable对象的run方法,直接调用只会在当前线程中执行任务,并不会启动新线程。
3. 中断线程
JDK1.0 stop() 现在已经被弃用,现在使用interrupt方法来请求终止一个线程,步骤如下:
Thread.currentThread().isInterrupted() //首先取得当前线程,然后调用isInterrupted()来判断给线程是否中断
如果一个线程被阻塞,而调用isInterrupted() ,将会产生InterruptedException异常
void interrupt(): 发送一个中断给一个线程,这个线程的中断状态将为True,如果当前线程被sleep调用,将抛出InterruptedException异常。常在catch(InterruptedException e) {Thread().currentThread().interrupt();}
static boolean interrupted(): 检查当前线程是否被中断,调用它将清除该线程的中断状态
boolean isInterrupted(): 检查线程是否被终止,而不会改变中断状态的值
4. 线程状态
New(新生)、Runnable(可运行)、Blocked(被阻塞)、Dead(死亡)
isAlive(): 如果线程已经启动并还没有被终止,返回true