第一次了解java线程机制,记录一下线程启动的三种方式。
1.通过继承Thread类调用一个线程
public class Thread1 extends Thread{
@Override
public void run() {
System.out.println("线程开始运行");
}
public static void main(String[] args){
Thread thread = new Thread1();
thread.start();
}
}
注意到线程启动的时候调用的是start方法,就会自动启动线程
2.通过实现Runnable接口
把该Runnable的实现类传递给一个Thread类,创建一个线程
public class Thread2 implements Runnable{
/* (非 Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
System.out.println("线程开始运行");
}
public static void main(String[] args){
Thread thread = new Thread(new Thread2());
thread.start();
}
}
3.继承Callable接口
后传递给一个FutureTask,再把该FutureTask传递给一个Thread类型,然后注意,要先start 该线程,然后再调用FutureTask的get()方法,才能执行对应的线程
public class Thread3 implements Callable<Object>{
@Override
public Object call() throws Exception {
System.out.println("线程开始运行");
return null;
}
public static void main(String[] args) throws InterruptedException, ExecutionException{
FutureTask<Object> f = new FutureTask<>(new Thread3());
Thread thread = new Thread(f);
thread.start();
f.get();
}
}