线程
创建线程的方式?
继承Thread
实现Runable接口
实现Callable接口(可以获取线程执行之后的返回值)
但实际后两种,更准确的理解是创建了一个可执行的任务,要采用多线程的方式执行
在实际开发中,我们通常采用线程池的方式来完成Thread的创建,更好管理线程资源
class MyThread extends Thread{
public void run(){ //重写run方法
sysout(Thread.currentThread().getName()+"running")
}
}
public static void main(String[] args){
MyThread =new MyThread();
thread.run();//调用方法并非开启新线程
thread.start();
MyTask task= new MyTask();
task.start()// 并不能直接以线程启动
new Thread(task).start();//他表达的是一个任务,需要启用一个线程来执行
}
class MyTask implements Runnable{
public void run(){
sysout
}
}
案例:实现runnable只是创建了一个可执行任务,并不是一个线程
class MyTask2 implements Callable<Boolean>{
public Boolean call() {
}
}
案例3 runnable vs callable
有无返回值的问题
明确一点:
本质上来说创建线程的方式就是继承Thread
就是线程池,内部也是创建好线程对象来执行任务