第一种:集成Thread类(start方法启动线程,run方法里是真正的线程执行体)
public class Demo1 extends Thread{
@Overried
public void run(){
System.out.println("线程执行了...");
}
public static void main(String[] args){
Demo1 demo1 = new Demo1();
demo1.start();
}
}
第二种:实现Runnable接口(作为线程任务存在最终交给线程)
public class Demo2 implements Runnable{@Overried
public void run(){
System.out.println("线程执行了...");
}
}
public static void main(String[] args){
Thread thread = new Thread(new Demo2());
thread.start();
}
第三种:匿名内部类的方式
public static void main(String[] args){
new Thread(){
public void run(){
system.out.println("线程执行了...");
}.start();
}
}
第四种:带返回值的线程
call方法相当于run方法,返回值是一个泛型,方法指定什么类型就返回什么类型,
用FutureTask封装一个线程任务
public class Demo4 implements Callable<Integer>{
@Overried
public Integer call(){
return 1;
}
public static void main(String[] args){
Demo4 d = new Demo4 ()
Thread t = new Thread(task);
t.start();
Integer result = t.get();
}
}