在Java中我们有两种方式来创建线程:继承Thread类并重写run方法,实现Runnable接口。
大牛Jakob Jenkov推荐实现Runnable接口这种方法。他解释说,线程池可以有效的管理实现了Runnable接口的线程,如果线程池满了,新的线程就会排队等候执行,直到线程池空闲出来为止。而如果线程是通过实现Thread子类实现的,这将会复杂一些。
通过创建一个实现Runnable接口的匿名内部类,实现线程的创建和运行,代码如下:
package com.markMe1024.thread;
public class ThreadTester {
public static void main(String[] args) {
// 1.创建实现Runnable接口的匿名内部类
Runnable myRunnable = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
// 2.创建Thread对象,并把实现了Runnable接口的类作为构造函数的参数传入(第二个参数是给这个线程命名)
Thread myThread = new Thread(myRunnable, "Thread Sync3Minutes");
// 3.启动线程
myThread.start();
// 4.打印这句话,看控制台输出,以此证明线程创建并启动成功
System.out.println("Just Print Here");
}
}