「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」
前言:工作需要,每天学习一点java知识,写点笔记,记录自己✨。
基础篇
线程
多线程,这里提到多线程就会有个疑问,什么是线程?🧐
举个简单的例子:人可以在呼吸的同时,可以同时思考问题、工作等活动,电脑可以被用来听歌、编辑文档、微信聊天,而这些活动的完成,可以同时进行。
这种同时执行多个操作的"思想" ,在java中被称为并发,而将并发完成的每一件事称为 。
多线程
多线程没问世之前,一个任务完成后再执行下一个任务,这样下一个任务执行,必须要等前一个任务执行完毕才能开始,严重浪费时间资源,java提供了并发机制,允许在程序中执行多个线程(任务),每个线程完成一个任务,并于其他线程并发执行,这种机制被称为多线程。
- Java中实现多线程几种方法
- 继承Thread类; extends Thread
- 实现Runnable接口; implements Runnable - 一般创建线程方式
- 实现Callable接口通过FutureTask包装器来创建Thread线程; 备注: 有返回值
-- 实现Callable接口通过FutureTask包装器来创建Thread线程
//自定义Callable,与上面一样
class Task implements Callable<Integer>{
@Override
public Integer call() throws Exception {
//模拟计算需要一秒
Thread.sleep(1000);
return 2;
}
}
public static void main(String[] args) throws IOException {
//使用
ExecutorService executor = Executors.newCachedThreadPool();
FutureTask<Integer> futureTask = new FutureTask<>(new Task());
executor.submit(futureTask);
System.out.println(futureTask.get());
}
}
对比
1、通过对实例代码可以看出,继承Thread方法是最简洁方便的,直接就可以Start,不需要任何转换<br/>
2、但是Thread有一个很不好的地方就是继承了Thread类后由于java的单继承机制,就不可以继承其他的类了,而如果实现的是接口,就可以实现多个接口,使开发更灵活。
3、实现Runnable接口相对实现Callable接口来说代码更简洁,使用更方便,少了一次转换,实现Callable接口:有返回值、抛出异常。