一、继承 Thread 类
public class MyThread extends Thread{//继承Thread类
public void run(){
//这里就是你要执行的业务逻辑代码
}
}
public class Main {
public static void main(String[] args){
new MyThread().start();//创建并启动线程
}
}
二、实现Runnable接口
public class MyRunnable implements Runnable {//实现Runnable接口
public void run(){
//业务逻辑代码
}
}
public class Main {
public static void main(String[] args){
//创建自己的Runable接口的实现类
MyRunnable myRunnable=new MyRunnable();
//将对象当作参数传进Thread类
Thread thread=new Thread(myRunnable);
//开启线程
thread().start();
//或者 new Thread(new MyRunnable()).start();
}
}
三、实现Callable接口
public class CallableDemo implements Callable <String>{
@Override
public String call() throws Exception {
SysUtil.out("进入子线程");
//睡两秒
Thread.sleep(2000);
return "我是子线程的返回值";
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
CallableDemo demo = new CallableDemo();
FutureTask<String> futureTask = new FutureTask<String>(demo);
Thread thread = new Thread(futureTask);
thread.start();
//这里会发生阻塞,会一直等待子线程返回结果
//所以一般都把这个返回值放在最后,保证其他业务逻辑能走下去。
String s = futureTask.get();
SysUtil.out(s);
SysUtil.out("我是主线程");
}
}