1、继承Thread重写run()方法
public class Demo1 extends Thread {
@Override
public void run() {
System.out.println(getName() + "线程执行了...");
}
public static void main(String[] args) {
Demo1 demo1 = new Demo1();
demo1.start();
}
}
2、实现Runnable接口的run()方法
public class Demo2 implements Runnable {
@Override
public void run() {
while (true) {
System.out.println("thread 1");
}
}
public static void main(String[] args) {
Thread thread = new Thread(new Demo2());
thread.start();
}
}
3、匿名内部类
public class Demo3 {
public static void main(String[] args) {
new Thread() {
public void run() {
System.out.println("thread run...");
}
}.start();
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("runnable run...");
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("runnable run...");
}
}) {
public void run() {
System.out.println("thread run...");
}
}.start();
}
}
4、带返回值的线程
public class Demo4 implements Callable<Integer> {
@Override
public Integer call() throws Exception {
System.out.println("running...");
return null;
}
public static void main(String[] args) {
Demo4 demo4 = new Demo4();
FutureTask<Integer> integerFutureTask = new FutureTask<>(demo4);
Thread thread = new Thread(integerFutureTask);
thread.start();
}
}
5、定时器
public class Demo5 {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("running...");
}
}, 0, 1000);
}
}
6、线程池
public class Demo5 {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("running...");
}
}, 0, 1000);
}
}