创建了线程都是重写run()方法,调用start()方法
1.继承Thread类
public class thread extends Thread {
public thread() {
super();
}
public thread(String name) {
super(name);
}
@Override
public void run() {
while(true) {
System.out.println(getName() + "开启线程!");
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println( isInterrupted());
}
}
}
2.继承Runnable接口
package Runnableimpl;
/**
* @Author:
* @BuildTime:
* @ChangeTime:
* @Function:
**/
public class runnableimpl implements Runnable{
@Override
public void run() {
System.out.println("线程启动!");
}
}
3.内部类的方式
package Demo;
public class demo1 {
public static void main(String[] args){
new Thread(){
@Override
public void run(){
System.out.println("线程启动!");
}
}.start();
}
}
4.继承Callable接口
package Demo;
import java.util.concurrent.Callable;
public class demo2 implements Callable<Integer> {
@Override
public Integer call() throws Exception {
System.out.println("线程启动--callable");
Thread.sleep(3000);
return 10;
}
}
5.定时器Timer创建线程
package Demo;
import java.util.Timer;
import java.util.TimerTask;
public class demo3 {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("线程3已经启动");
}
}, 1000, 1000);
}
}
6.Executors创建线程池创建线程