方式一:继承Thread类
public class Demo06 extends Thread{
public static void main(String[] args) {
Demo06 demo06=new Demo06();
demo06.start();
}
@Override
public void run() {
System.out.println("子线程被调用");
}
}
方式二:实现Runnable接口
public class Demo04 implements Runnable{
public static void main(String[] args) {
//多线程创建方式二:
Demo04 demo04=new Demo04();
Thread thread=new Thread(demo04,"subThread");
thread.start();
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
@Override
public void run() {
for (int i = 10; i < 20; i++) {
System.out.println(i);
}
}
}
方式三:实现callable接口
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class Demo05 implements Callable{ public static void main(String[] args) throws ExecutionException, InterruptedException { //创建线程方式3 Demo05 demo05=new Demo05(); FutureTask futureTask=new FutureTask<>(demo05); Thread thread=new Thread(futureTask); thread.start(); Integer result = futureTask.get(); System.out.println(result); } @Override public Integer call() throws Exception { for (int i = 0; i < 10; i++) { System.out.println(i); if (i==6){ return i; } } return -1; } }



