public class T01_CreateThread {
// 创建线程的三种方式
public static void main(String[] args) {
// 通过实现Runnable接口来创建Thread线程
// 1、写一个类实现Runnable 接口
// 2、创建一个对象
RunnableMe runnableMe = new RunnableMe();
// 3、由runnable 创建一个thread 对象
// 4、通过调用start 方法来启动一个线程
new Thread(runnableMe, " i am runnable thread").start();
// 注意坑,此只是调用了run方法并不是启动了一个线程,通过查看 线程name ,发现打印的是 主线程的名字 main
runnableMe.run();
System.out.println("main: " + Thread.currentThread().getName());
}
// 实现 runnable 接口
private static class RunnableMe implements Runnable {
@Override
public void run() {
System.out.println("i am thread runnable " + Thread.currentThread().getName());
}
}
}
输出结果:
i am thread runnable main
i am thread runnable i am runnable thread
main: main
通过实现Callable接口来实现
public class T01_CreateThread {
// 创建线程的三种方式
public static void main(String[] args) {
//
// 通过实现Callable 接口来实现
// 由Callable<Integer>创建一个FutureTask<Integer>对象:
FutureTask<Integer> oneTask = new FutureTask<Integer>(new CallableMe());
// FutureTask<Integer>是一个包装器,它通过接受Callable<Integer>来创建,它同时实现了Future和Runnable接口。
// 由FutureTask<Integer>创建一个Thread对象:
new Thread(oneTask, "i am FutureTask").start();
System.out.println("main: " + Thread.currentThread().getName());
}
private static class CallableMe implements Callable {
@Override
public Object call() throws Exception {
System.out.println("i am thread CallableMe " + Thread.currentThread().getName());
return 0;
}
}
}
输出结果:
main: main
i am thread CallableMe i am FutureTask
继承Thread 类实现创建线程
public class T01_CreateThread {
// 创建线程的三种方式
public static void main(String[] args) {
// 1 通过继承 thread 来实现
ThreadMe threadMe = new ThreadMe(" i am extends thread");
// 启动线程
threadMe.start(); //
}
// 继承 thread
private static class ThreadMe extends Thread {
public ThreadMe(String name) {
super(name);
}
@Override
public void run() {
System.out.println("i am thread extends thread " + Thread.currentThread().getName());
}
}
}
输出结果:
i am thread extends thread i am extends thread