方式1:继承 Thread 类
package com.daidai;
public class ExtendThread {
public static void main(String[] args) {
MyThread myThread1 = new MyThread("线程1");
MyThread myThread2 = new MyThread("线程2");
MyThread myThread3 = new MyThread("线程3");
myThread1.start();
myThread2.start();
myThread3.start();
}
}
class MyThread extends Thread{
public MyThread(String name) {
super(name);
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "正在执行。。。");
}
}
方式2:实现 Runnable 接口
package com.daidai;
public class ImplRunnable{
public static void main(String[] args) {
new Thread(new MyRunable(), "线程1").start();
new Thread(new MyRunable(), "线程2").start();
new Thread(new MyRunable(), "线程3").start();
}
}
class MyRunable implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "正在跑。。。");
}
}
方式3:实现 Callable 接口
package com.daidai;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class ImplCallable {
public static void main(String[] args) {
FutureTask task1 = new FutureTask<>(new MyCallable());
FutureTask task2 = new FutureTask<>(new MyCallable());
FutureTask task3 = new FutureTask<>(new MyCallable());
new Thread(task1, "线程1").start();
new Thread(task2, "线程2").start();
new Thread(task3, "线程3").start();
}
}
class MyCallable implements Callable {
@Override
public Boolean call() throws Exception {
System.out.println(Thread.currentThread().getName() + "正在跑。。。");
return true;
}
}