创建线程的几种方式
public class T02_HowToCreateThread {
static class MyThread extends Thread {
@Override
public void run() {
System.out.println("Hello MyThread!");
}
}
static class MyRun implements Runnable {
@Override
public void run() {
System.out.println("Hello MyRun!");
}
}
static class MyCall implements Callable<String> {
@Override
public String call() {
System.out.println("Hello MyCall");
return "success";
}
}
启动线程的五种方式
public static void main(String[] args) {
new MyThread().start(); //第一种
new Thread(new MyRun()).start(); //第二种
new Thread(()->{ //第三种
System.out.println("Hello Lambda!");
}).start();
Thread t = new Thread(new FutureTask<String>(new MyCall())); //第四种
t.start();
ExecutorService service = Executors.newCachedThreadPool(); //第五种
service.execute(()->{
System.out.println("Hello ThreadPool");
});
service.shutdown();
}
}
中断线程的方法
当线程的run方法执行方法体中的最后一条语句后,并经由执行return语句返回时,或者出现了在方法中没有捕获的异常时,线程将终止。
没有可以强制线程终止的方法。然而,interrupt方法可以用来请求终止线程。
Java早期版本中,还有一个stop方法,其他线程可以调用它终止线程。但是这个方法已经被弃用了。
线程状态
线程可以有如下6种状态:
- New (新创建)
- Runnable (可运行)
- Blocked (被阻塞)
- Waiting (等待)
- Timed waiting (计时等待)
- Terminated (被终止)
要确定一个线程的当前状态,可调用getState方法
来源:oschina
链接:https://my.oschina.net/u/4319831/blog/4289783