Callable和Runnable的区别「建议收藏」

classcimplementsCallable<String>{ @Override publicStringcall()throwsException{ returnnull; } } classrimplementsRunnable{ @Override publicvoidrun(){ } }相同点:…

大家好,又见面了,我是你们的朋友全栈君。

	class c implements Callable<String>{ 
   
		@Override
		public String call() throws Exception { 
   
			return null;
		}
	}
	
	class r implements Runnable{ 
   
		@Override
		public void run() { 
   
		}
	}

相同点:

1、两者都是接口

2、两者都需要调用Thread.start启动线程

不同点:

1、如上面代码所示,callable的核心是call方法,允许返回值,runnable的核心是run方法,没有返回值

2、call方法可以抛出异常,但是run方法不行

3、因为runnable是java1.1就有了,所以他不存在返回值,后期在java1.5进行了优化,就出现了callable,就有了返回值和抛异常

4、callable和runnable都可以应用于executors。而thread类只支持runnable

测试:使用线程池来运行

public static void main(String[] args) throws Exception{ 
   
		//1 创建一个线程池
		//调用Executors类的静态方法
		ExecutorService service = Executors.newFixedThreadPool(10);
		//2提交runnable对象
		service.submit(new Runnable() { 
   
			@Override
			public void run() { 
   
			}
		});
		//3 提交callable对象
		service.submit(new Callable<String>() { 
   
			@Override
			public String call() throws Exception { 
   
				return null;
			}
		});
		//4 关闭线程池
		service.shutdown();
	}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126405.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 无键盘屏幕配置树莓派连接WiFi

    无键盘屏幕配置树莓派连接WiFi前言Ubuntu20.04LTS都发布好一段时间了,官方支持RaspberryPi,手痒痒了想试试,结果发现没带miniHDMI的转接线,看了下Ubuntu官方的树莓派安装文档:https://ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#1-overview可以直接在TF卡根目录下面创建配置文件来实现WiFi连接的.记录一下实操过程Ubuntu20.04LTS系统镜像写入TF卡习惯了先手动下载系统镜像:

    2022年6月13日
    24
  • 链表排序java_java有序链表

    链表排序java_java有序链表这是自己的第一篇博客,话说学习是50%的学习,另外50%是解释,以后会分享自己遇到的一些问题,欢迎各位大佬指教。第一篇对象数组排序的问题处理。..

    2022年10月11日
    0
  • pycharm 不显示 plot 绘图

    pycharm 不显示 plot 绘图查了很多,都是说加:plt.show()但加过之后仍然不显示后来,我把importmatplotlib.pyplotasplt提到了另外几个import的前面,就正常显示了

    2022年8月27日
    2
  • JSP入门教程(4)[通俗易懂]

    使用脚本在有些地方,你大概要加一些好的,成熟的程序到你的JSP页里,JSP的标签虽然很强大,但是完成某些工作还是比较费力的困难的。这时你可以使用脚本语言段来补充JSP标签。使用的JSP引擎是支持脚本语言的,SUN的JSP参考文说明,必须使用Java程序语言来编写脚本,但是其他第三方的JSP引擎允许使用其他语言来写脚本程。如何增加脚本首先,你必须了解一些增加脚本元素到JSP页中的一些基本规则

    2022年4月10日
    42
  • Linux中pycharm如何进入虚拟环境

    Linux中pycharm如何进入虚拟环境网上有一种进入venv虚拟环境的方法,那今天就说另一种这种是已经在虚拟环境中了这种是没进入虚拟环境中进入虚拟环境需要这样输入sourceactivate然后就进入虚拟环境了…

    2022年8月27日
    2
  • idea2021.7.15版激活码【中文破解版】[通俗易懂]

    (idea2021.7.15版激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

    2022年3月21日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号