| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Java(71):多线程学习02-->实现Runnable接口方式实现多线程 -> 正文阅读 |
|
[Java知识库]Java(71):多线程学习02-->实现Runnable接口方式实现多线程 |
虽然Thread类可以实现多线程的主体类定义,但是它有一个问题,java具有单线程局限,正因如此针对于类的继承都应该是回避的问题,那么多线程也一样。为了解决单线程的限制,在java里面专门提供了Runnable接口。 1、实现Runnable接口方式实现多线程与继承Thread类相比,实现Runnable接口的RunnableTest类在结构上与之前是没有区别的,但是有一点是有严重区别的,如果继承了Thread类,那么可以直接继承start()方法,但是实现Runnable接口是没有start()方法的。不管何种情况下,如果要启动多线程一定要依靠Thread类完成,多线程唯一的启动方法就是Thread类中的start方法。
写一个类实现Runnable接口,实现run方法。用new Thread(Runnable target).start()方法来启动,如下: 1.1定义Runnable接口的实现类 class RunnableTest implements Runnable{ private int ticket =10; //1.2重写其中的run方法 @Override public void run() { for (int i = 0; i < 20; i++) { if (this.ticket > 0) { System.out.println("票号:"+ticket-- + ",已被售卖,售卖窗口:" + Thread.currentThread().getName()); } } } } 1.1、线程独立完成任务生成3个任务对象实例,每个任务生成独立的线程来执行:即3个卖票10张的任务分别分给3个窗口,他们各做各的事各卖各的票各完成各的任务。 RunnableTest rt1=new RunnableTest(); RunnableTest rt2=new RunnableTest(); RunnableTest rt3=new RunnableTest(); Thread t1 = new Thread(rt1,"1号窗口"); Thread t2 = new Thread(rt2,"2号窗口"); Thread t3 = new Thread(rt3,"3号窗口"); t1.start(); t2.start(); t3.start(); 执行结果: 【线程的创建和启动的步骤(实现Runnable接口方式)】 【关于命名】 在创建Thread 对象的时候可以为该Thread对象指定一个名字
【Thread的构造方法】 1.2、数据资源共享,一起完成(再不考虑线程安全的情况下,学习的例子) 实际开发中我们通常采用Runnable接口来实现多线程。因为实现Runnable接口比继承Thread类有如下好处:? public class RunnableDemo { public static void main(String[] args){ ? //2.创建Runnable的接口实现类的实例 RunnableTest rt1 = new RunnableTest(); ? //2.用Runnable的接口实现类的实例作为Thread的target,创建Thread对象,同时为之命名 Thread t1=new Thread(rt1,"1号窗口"); Thread t2=new Thread(rt1,"2号窗口"); Thread t3=new Thread(rt1,"3号窗口"); ? //启动线程 t1.start(); t2.start(); t3.start(); } } 执行结果: 实现资源共享:?编写一个任务类实现Runnable接口, 相当于是拿出一个卖票10张的任务给三个人去共同完成,new RunnableTest相当于创建一个任务,然后通过new Thread实例化3个Thread,创建3个线程即1个任务安排3个窗口去执行。 ? ? ?实现Runable的一个好处就是能实现资源共享。当然实现一个任务用多个线程来做也可以用继承Thread类来实现只是比较麻烦,一般我们用实现Runnable接口来实现,简洁明了。 其他摘抄信息:
面试题:请解释Thread类和Runnable接口实现多线程的区别?(请解释多线程两种实现方式的区别?) Thread类是Runnable接口的子类,使用Runnable接口实现多线程可以避免单继承局限。 参考:java学习线程篇之多线程的实现方式:继承Thread类、实现Runnable接口或Callable接口 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:40:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |