Java构建线程的方式
2023-12-25 10:44:27
- 继承Thread类
通过上面代码可以看出Thread类自身实现了Runnable接口,并在创建Thread类时,通过有参构造写入,将Thread类中的target属性进行赋值,并在调用线程的时候执行你传入的Thread类的run方法。
- 实现Runnable接口
- 实现Callable接口Callable提供的call方法结果可以有返回结果并且可以抛出异常。
public class CallableTest implements Callable<Integer> { private int num = 0; @Override public Integer call() throws Exception { for (int i = 0; i < 10; i++) { num++; } return num; } public static void main(String[] args) throws Exception { Callable<Integer> callable = new CallableTest(); FutureTask<Integer> futureTask = new FutureTask<>(callable); Thread t = new Thread(futureTask); t.start(); System.out.println(futureTask.get()); } }
- 线程池方法
线程池方式其实和上面没有区别,只不过上面需要频繁的创建和销毁线程,会造成一些不必要的额外资源消耗,所以在实际开发中肯定会采用线程池的方式。Java 中的 Executors自带了一些创建线程池的方式。在构建好线程池 ThreadPoolExecutor 后就可以直接调用 execute 、 submit 方法执行线程任务。
- execute适用于Runnable没有返回结果
- submit更适合Callable具有返回结果
文章来源:https://blog.csdn.net/qq_44577699/article/details/135191490
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!