1.继承Thread类,重写run方法
public class BuidThread {
//静态内部类写法
public static class ThreadDemo extends Thread {
public void run() {
System.out.println("通过继承Thread创建线程");
}
}
public static void main(String[] args) {
new Thread(new ThreadDemo()).start();
}
}
public class BuidThread {
public static void main(String[] args) {
//匿名内部类写法
Thread thread = new Thread() {
public void run() {
System.out.println("通过继承Thread创建线程");
}
};
new Thread(thread).start();
}
}
2.实现Runnable接口,重写run方法
public class BuidThread {
//静态内部类写法
public static class ThreadDemo implements Runnable {
public void run() {
System.out.println("通过实现Runable创建线程");
}
}
public static void main(String[] args) {
new Thread(new ThreadDemo()).start();
}
}
public class BuidThread {
public static void main(String[] args) {
//匿名内部类写法
Runnable thread = new Runnable() {
@Override
public void run() {
System.out.println("通过实现Runable创建线程");
}
};
new Thread(thread).start();
}
}
3.实现Callable接口,重写call方法
public class BuidThread {
//静态内部类写法
public static class ThreadDemo implements Callable {
@Override
public Object call() throws Exception {
System.out.println("通过实现Callable创建线程");
return null;
}
}
public static void main(String[] args) {
FutureTask futureTask = new FutureTask(new ThreadDemo());
new Thread(futureTask).start();
}
}
public class BuidThread {
public static void main(String[] args) {
//匿名内部类写法
Callable thread = new Callable() {
@Override
public Object call() throws Exception {
System.out.println("通过实现Callable创建线程");
return null;
}
};
FutureTask futureTask = new FutureTask(thread);
new Thread(futureTask).start();
}
}
注:网上有些文章把线程池执行线程也算成第四种创建方式,但严格来说只是把实现Runnable接口的线程传入,从写法上来说只是启动方式不一样,所以算成第四种创建方式感觉不太妥当,大家有疑问想法可以说说。。。