文档章节

JavaSE 学习参考:Runnable接口实现线程任务

博为峰教研组
 博为峰教研组
发布于 2017/03/25 20:49
字数 425
阅读 9
收藏 0

 

Runnable接口

前面已经提到过通过继承Thread类创建线程,将线程的任务定义在重写的run方法即可。但是由于Java是单继承机制,假如某个业务类已经继承了一个父类同时有希望作为一个线程类,这样就无法再继承Thread类了,不过Thread类在设计时提供了一个插件机制来让我们通过插件的方式来实现线程。这个所谓的插件机制就是通过向外公开接口,来实现线程功能。先了解一下Thread类源码:

public

class Thread implements Runnable {

private Runnable target; 

public Thread(Runnable target) {

        this.target= target;

    }

public void run() {

        if (target != null) {

            target.run();

}

    }

   }

我们可以看到Thread提供了Runnable接口作为参数的构造方法。Runnable接口只定义了一个抽象方法run。该构造方法将参数的Runnable接口的实现类对象传递自身的Runnable接口引用。再看run方法,判定引用的Runnable接口是否存在,若不存在则线程空操作,实现上这种是继承的子类需要重写。若判定引用的Runnable接口存在,则按照Runnable接口实现类的run方法去执行线程,是这直接使用Thread类来创建对象,前置条件Runnable接口实现类作为构造方法参数。

由此我们可以得这样的结论:业务类也要实现线程功能,只需要实现Runnable接口,将线程的任务定义在run方法,然后将业务类对象作为参数使用Thread(Runnable)构造方法来创建Thread对象。

© 著作权归作者所有

博为峰教研组
粉丝 50
博文 1224
码字总数 479077
作品 0
黄浦
程序员
私信 提问
JAVA多线程实现的三种方式

最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟们的见解后做了下总结。 1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorS...

JasonO
2016/03/08
145
0
Java并发编程 -- Executor 框架介绍

前面详细通过源码解释了ThreadPoolExecutor类的运行原理,本篇文章来说一下Executor的框架组成。 Java的线程既是工作单元也是执行单元,从JDK5开始,把工作单元与执行机制分离开来,工作单元...

GordonNemo
2018/03/13
40
0
Java 编程要点之并发(Concurrency)详解

本文同步至 计算机用户想当然地认为他们的系统在一个时间可以做多件事。他们认为,他们可以工作在一个字处理器,而其他应用程序在下载文件,管理打印队列和音频流。即使是单一的应用程序通常...

waylau
2016/01/22
334
1
Thinking In Java 21.2 基本的线程进制 学习摘要

对笔者近期刚阅读完的Thinking In Java的12.2节简单做个概述: 本节的主要内容: 为什么要引入多线程 多线程实现的机制:抢占式的轮转调度机制(如何避免抢占可以参考使用协作线程) 多线程的...

孤独的岛_Bin
2018/05/29
8
0
java多线程的6种实现方式详解

多线程的形式上实现方式主要有两种,一种是继承Thread类,一种是实现Runnable接口。本质上实现方式都是来实现线程任务,然后启动线程执行线程任务(这里的线程任务实际上就是run方法)。这里...

watermelon11
02/25
26
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
5
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部