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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android Studio 3.1新特性介绍

    Android Studio 3.1新特性介绍

    2021年5月26日
    103
  • Ajaxpro组件

    Ajaxpro组件这一篇我们来看一个开源的组件:ajaxpro。虽然这是一个比较老的组件,不过实现思想和源码还是值得我们学习的。通过上一篇的介绍,我们知道要调用页面对象的方法,就是靠反射来实现的,关键是整个处理过程,包括反射调用方法、参数映射等。ajaxpro不仅在后台帮我们实现了这个过程,在前台也封装了请求调用的方法,例如ajax的相关方法,用ajaxpro的方法就可以发送异步请求了,不需要自己封装js或者使用j…

    2022年7月12日
    11
  • GPG error 解决方案「建议收藏」

    GPG error 解决方案「建议收藏」错误提示:GPG错误:http://mirrors.163.commaverick-updatesRelease:下列签名无效:BADSIG40976EAF437D05B5UbuntuArchiveAutomaticSigningKey@ubuntu.com>修复方法gp

    2022年10月13日
    0
  • Android之viewstub用法详解及实现延迟加载

    这一篇是接着上面的include标签的例子来讲的,地址http://blog.csdn.net/jason0539/article/details/26131831 上一篇的布局中间就用了viewstub这个控件,现在来说一下其作用和用法” ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,避免资源浪费,在需要的时候才加载View”需

    2022年3月11日
    72
  • 对c语言中static函数的理解「建议收藏」

    对c语言中static函数的理解「建议收藏」先看看前两篇博客:个人对头文件的理解、对声明和定义的理解。static函数只在定义该static函数的cpp中可见,在其他cpp中是不可见的。举个例子,我建立了一个project,该projec

    2022年7月4日
    20
  • 基于Tensorflow的DCNN实现(A Convolutional Neural Network for Modelling Sentences)「建议收藏」

    基于Tensorflow的DCNN实现(A Convolutional Neural Network for Modelling Sentences)「建议收藏」本文我写了一个基于tensorflow的DCNN的实现,原文是AConvolutionalNeuralNetworkforModellingSentences,地址如下:https://arxiv.org/abs/1404.2188先给出我自己的github的代码https://github.com/jacky123465/DCNN(如果是python3.几的版本是可以直接运行…

    2022年5月20日
    36

发表回复

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

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