java创建线程哪种方法最好_Java创建线程的三种方法比较
一般有三种方法,Thread,Runnable,Callable.
Runnable和Callable的区别
(1)Callable规定的方法是call(),Runnable规定的方法是run().
(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得
(3)call方法可以抛出异常,run方法不可以
(4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。
**通过实现Runnable接口来创建Thread线程:
步骤1:创建实现Runnable接口的类:
class SomeRunnable implements Runnable
{
public void run()
{
//do something here
}
}
步骤2:创建一个类对象:
Runnable oneRunnable = new SomeRunnable();
步骤3:由Runnable创建一个Thread对象:
Thread oneThread = new Thread(oneRunnable);
步骤4:启动线程:
oneThread.start();
注释:线程的执行流程很简单,当执行代码oneThread.start();时,就会执行oneRunnable对象中的void run();方法,该方法执行完成后,线程就消亡了。
**通过实现Callable接口来创建Thread线程:
与方法1类似,通过实现Callable接口来创建Thread线程:其中,Callable接口(也只有一个方法)定义如下:
Java代码:
public interface Callable
{
V call() throws Exception;
}
步骤1:创建实现Callable接口的类SomeCallable(略);
步骤2:创建一个类对象:
Callable oneCallable = new SomeCallable();
步骤3:由Callable创建一个FutureTask对象:
FutureTask oneTask = new FutureTask(oneCallable);
注释:FutureTask是一个包装器,它通过接受Callable来创建,它同时实现了
Future和Runnable接口。
步骤4:由FutureTask创建一个Thread对象:
Thread oneThread = new Thread(oneTask);
步骤5:启动线程:
oneThread.start();
至此,一个线程就创建完成了。
**通过继承Thread类来创建一个线程:
步骤1:定义一个继承Thread类的子类:
Java代码:
class SomeThead extends Thraad
{
public void run()
{
//do something here
}
}
步骤2:构造子类的一个对象:
SomeThread oneThread = new SomeThread();
步骤3:启动线程:
oneThread.start();
至此,一个线程就创建完成了。
java创建线程哪种方法最好_Java创建线程的三种方法比较相关推荐
- java截取倒数后六位的字符串_java 字符串截取的三种方法(推荐)
众所周知,java提供了很多字符串截取的方式.下面就来看看大致有几种. 1.split()+正则表达式来进行截取. 将正则传入split().返回的是一个字符串数组类型.不过通过这种方式截取会有很大的 ...
- java数组初始_java数组初始化的三种方式
第一种方式:通过给定数组长度来赋值: public static void main(String[] args) { // TODO Auto-generated method stub //第一种 ...
- android写入文件方法,Android 追加写入文件的三种方法
一.使用FileOutputStream 使用FileOutputStream,在构造FileOutputStream时,把第二个参数设为true public static void method1 ...
- python下载方法-python实现下载文件的三种方法_python
本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...
- java中math.ceil用法_[Java教程]关于Math类的round、floor、ceil三个方法
[Java教程]关于Math类的round.floor.ceil三个方法 0 2014-05-06 16:00:08 一.Math类这三个方法的简介 1.round():取最接近的值. 对于这个方法, ...
- java创建线程的两种方法是_java创建线程的两种方法
要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 哪种方法 ...
- oracle的多线程怎么实现,创建线程的两个方法(Oracle官网说两种,所以我们就别说什么三种四种了)...
一.有多少种实现多线程的方法? 1.不同的角度有不同的答案 2.典型的答案有两种,分别是实现Runnable接口和继承Thread类 3.但是看原理,其实Thread类实现了Runnable接口,并且 ...
- java se 定时任务_Java实现定时任务的三种方法
一.Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承o ...
- java 反射 找不到方法_Java获取反射的三种方法
class Student { private int id; String name; protected boolean sex ; pub1ic f1oat score; } pub1ic cl ...
最新文章
- 移动医疗:医护到家或成关键
- java mysbatis select_MyBatis SELECT基本查询实现方法详解
- 正则查看接口消耗时间超过4位数的
- springboot 通过url访问本地文件
- 苹果cms10 官方QQ微信防红防封代码
- windows自动设置ip地址脚本
- 凸二次规划问题 库函数
- 手机修改ntp服务器地址,修改手机ntp服务器ip地址
- CCD和CMOS大小(尺寸)对比图
- 浙大开源快速扩散语音合成模型FastDiff和ProDiff
- canvas画不规则图形
- node.js -- 手把手教你搭建 电商平台
- 记一次confluence邮件服务器配置的坑(阿里企业邮箱)
- 漏洞复现 - - - Springboot未授权访问
- 操作系统1(OS,operating system)
- Ubuntu上安装搜狗中文输入法
- 计算机考研视频哪个机构的好,计算机考研考点教学视频哪个好
- NLP:《NLP Year in Review 2019NLP_2019_Highlights》2019年自然语言处理领域重要进展回顾及其解读
- nginx设置403的自定义页面不起用
- C语言小练习-酒店预订
热门文章
- python设置函数_在Python中设置函数签名
- 用计算机解决问题 评课稿,总结反思:二年级数学lbrack;解决问题rsqb;评课稿
- matlab 多项式表达,MATLAB自学笔记(十七):多项式及其函数
- owncloud8 php,owncloud-8.2.3
- 区域显示触发_Nature Communications:地幔数据显示可氧化的火山气体的减少可能触发了大氧化事件...
- 如何在Node.js的httpServer中接收前端发送的arraybuffer数据
- 线性回归 —— python
- 无线多串口服务器,多串口通信服务器
- 存储池与存储卷,使用virt-install创建虚拟机
- 怎么将电脑的图片不用打开也能显示出来