一般有三种方法,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创建线程的三种方法比较相关推荐

  1. java截取倒数后六位的字符串_java 字符串截取的三种方法(推荐)

    众所周知,java提供了很多字符串截取的方式.下面就来看看大致有几种. 1.split()+正则表达式来进行截取. 将正则传入split().返回的是一个字符串数组类型.不过通过这种方式截取会有很大的 ...

  2. java数组初始_java数组初始化的三种方式

    第一种方式:通过给定数组长度来赋值: public static void main(String[] args) { // TODO Auto-generated method stub //第一种 ...

  3. android写入文件方法,Android 追加写入文件的三种方法

    一.使用FileOutputStream 使用FileOutputStream,在构造FileOutputStream时,把第二个参数设为true public static void method1 ...

  4. python下载方法-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

  5. java中math.ceil用法_[Java教程]关于Math类的round、floor、ceil三个方法

    [Java教程]关于Math类的round.floor.ceil三个方法 0 2014-05-06 16:00:08 一.Math类这三个方法的简介 1.round():取最接近的值. 对于这个方法, ...

  6. java创建线程的两种方法是_java创建线程的两种方法

    要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 哪种方法 ...

  7. oracle的多线程怎么实现,创建线程的两个方法(Oracle官网说两种,所以我们就别说什么三种四种了)...

    一.有多少种实现多线程的方法? 1.不同的角度有不同的答案 2.典型的答案有两种,分别是实现Runnable接口和继承Thread类 3.但是看原理,其实Thread类实现了Runnable接口,并且 ...

  8. java se 定时任务_Java实现定时任务的三种方法

    一.Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承o ...

  9. java 反射 找不到方法_Java获取反射的三种方法

    class Student { private int id; String name; protected boolean sex ; pub1ic f1oat score; } pub1ic cl ...

最新文章

  1. 移动医疗:医护到家或成关键
  2. java mysbatis select_MyBatis SELECT基本查询实现方法详解
  3. 正则查看接口消耗时间超过4位数的
  4. springboot 通过url访问本地文件
  5. 苹果cms10 官方QQ微信防红防封代码
  6. windows自动设置ip地址脚本
  7. 凸二次规划问题 库函数
  8. 手机修改ntp服务器地址,修改手机ntp服务器ip地址
  9. CCD和CMOS大小(尺寸)对比图
  10. 浙大开源快速扩散语音合成模型FastDiff和ProDiff
  11. canvas画不规则图形
  12. node.js -- 手把手教你搭建 电商平台
  13. 记一次confluence邮件服务器配置的坑(阿里企业邮箱)
  14. 漏洞复现 - - - Springboot未授权访问
  15. 操作系统1(OS,operating system)
  16. Ubuntu上安装搜狗中文输入法
  17. 计算机考研视频哪个机构的好,计算机考研考点教学视频哪个好
  18. NLP:《NLP Year in Review 2019NLP_2019_Highlights》2019年自然语言处理领域重要进展回顾及其解读
  19. nginx设置403的自定义页面不起用
  20. C语言小练习-酒店预订

热门文章

  1. python设置函数_在Python中设置函数签名
  2. 用计算机解决问题 评课稿,总结反思:二年级数学lbrack;解决问题rsqb;评课稿
  3. matlab 多项式表达,MATLAB自学笔记(十七):多项式及其函数
  4. owncloud8 php,owncloud-8.2.3
  5. 区域显示触发_Nature Communications:地幔数据显示可氧化的火山气体的减少可能触发了大氧化事件...
  6. 如何在Node.js的httpServer中接收前端发送的arraybuffer数据
  7. 线性回归 —— python
  8. 无线多串口服务器,多串口通信服务器
  9. 存储池与存储卷,使用virt-install创建虚拟机
  10. 怎么将电脑的图片不用打开也能显示出来