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)
上一篇 2022年4月17日 下午9:20
下一篇 2022年4月17日 下午9:40


相关推荐

  • Java 图片URL转Base64编码

    Java 图片URL转Base64编码前言实现方式:通过图片URL获取二进制流,再对字节数组进行Base64编码转换具体实现实现类importsun.misc.BASE64Encoder;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importjava.net.HttpURLConnection;importjava.net.URL;importjava.util.regex.Matcher;importjava.util.r

    2025年11月20日
    6
  • php获取前一天,前一个月,前一年的时间[通俗易懂]

    php获取前一天,前一个月,前一年的时间

    2022年1月18日
    43
  • Java的8个Java日志工具[通俗易懂]

    摘要:本文要来分享一些Java程序员最常用的Java日志框架组件。日志工具log4j–最受欢迎的Java日志组件Log4j是一款基于Java的开源日志组件,Log4j功能非常强大,我们可以将日志信息输出到控制台、文件、用户界面,也可以输出到操作系统的事件记录器和一些系统常驻进程。更值得一提的是,Log4j可以允许你非常便捷地自定义日志格式和日志等级,可以帮助开发人员全方位地掌控…

    2022年4月9日
    499
  • Python解决求最大公约数和最小公倍数问题

    Python解决求最大公约数和最小公倍数问题目录一.思路分析1.欧几里得法(辗转相除法)2.穷举法(一个一个除)3.stein算法二.提高要求三.测试截图题目:求两个正整数的最大公约数和最小公倍数。基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出。提高要求:1.三种以上算法解决两个正整数最大公约数问题。         2.求3个正…

    2022年5月16日
    42
  • 关于java的外语文献_java英文参考文献(涵盖3年最新120个)

    关于java的外语文献_java英文参考文献(涵盖3年最新120个)近年来,随着我国科学的技术的飞速发展,计算机语言的内容和形式得到了极大的丰富,特别是java语言的广泛应用,它不仅是计算机语言的重要组成部分,同时也是我国程序编写的重要内容之一,java语言的出现和广泛使用,极大的丰富了人们的生产,生活,为人们的工作和学习提供了很大的便利.下面是搜素整理的java英文参考文献的分享,供大家借鉴参考。java英文参考文献一:[1]AbbasMrAnsar,Eli…

    2022年9月30日
    4
  • 聊聊Dotnetty

    聊聊Dotnetty以前 我曾经写过一个 C S 的期货交易系统 C S 就绕不开通信 我大概的了解了 net 的通信机制后 选择用 TCP 长连接实现了通信 客户端可以调用服务器端 服务器端可以主动推送消息到客户端 实现是实现了 但是代码笨重而且低效 近来又要解决一个 C S 的通信问题 感觉到自己以前写的通信继续复用会触犯自己的洁癖 同时深感自己的精力大不如以前 重新写一个优雅而且高效的通信的中间件没有任何信心 于是就在网络上

    2026年3月19日
    3

发表回复

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

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