Java多线程(2)--Thread类继承和Runnable接口创建线程
Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来体现。
Thread类的特性
每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体,通过该Thread对象的start()方法来启动这个线程,而非直接调用run()。
JDK1.5之前创建新执行线程有两种方法:
①继承Thread类的方式 (点击查看Thread类相关常用的方法)
②实现Runnable接口的方式
方式一:继承Thread类
①定义子类继承Thread类。
②子类中重写Thread类中的run方法。
③创建Thread子类对象,即创建了线程对象。
④调用线程对象start方法:启动线程,调用run方法。
继承Thread的子类MyThread
public class MyThread extends Thread{@Overridepublic void run() { //该方法体即为该线程要执行的程序for (int i = 0;i < 50;i++){if (i % 2 == 0) System.out.println(i);}}
}
创建线程对象并执行
public class TestThread {public static void main(String[] args) {//创建线程MyThread thread = new MyThread();//启动该线程,并执行run()方法thread.start();//以下是不同于thread的线程for (int i = 0; i < 50; i++) {if (i % 2 == 0) {System.out.println(i + "#####");}}}
}
结果(仅截取部分)
该结果随着计算机的不同会有不同的情况,不定。但要表达的意思就是多线程执行的情况下不同线程是并行的。
注意点:
①如果自己手动调用run()方法,那么就只是普通方法,没有启动多线程模式。
②run()方法由JVM调用,什么时候调用,执行的过程控制都有操作系统的CPU调度决定。
③启动多线程,必须通过调用start()方法。
④一个线程对象只能调用一次start()方法启动,如果重复调用了,则将抛出异常“IllegalThreadStateException”。
方式二:实现Runnable接口
①定义子类,实现Runnable接口。
②子类中重写Runnable接口中的run方法。
③通过Thread类含参构造器创建线程对象。
④将Runnable接口的子类对象作为实际参数传递给Thread类的构造器中。
⑤调用Thread类的start方法:开启线程,调用Runnable子类接口的run方法。
实现Runnable接口的类
public class MThread implements Runnable{@Overridepublic void run() {for (int i = 0; i < 100; i++) {if (i % 2 == 0){System.out.println(i);}}}
}
创建对象并执行
public class TestThread {public static void main(String[] args) {MThread thread = new MThread();Thread curThread = new Thread(thread);curThread.start();}
}
继承方式和实现方式的联系与区别
开发中:优先选择:实现Runnable 接口的方式
原因:①实现的方式没有类的单继承性的局限性。②实现的方式更适合来处理多个线程有共享数据的情况。
联系: public class Thread implements Runnable
相同点:两种方式都需要重写run(),将线程要执行的逻辑写在在run()中。
Java多线程(2)--Thread类继承和Runnable接口创建线程相关推荐
- java基础 通过继承Thread类和实现Runnable接口创建线程
java 创建线程 Java中,线程也是一种对象,但不是任何对象都可以成为线程. 只有实现了Runnable接口或继承了Thread类的对象才能成为线程. 继承Thread类 //格式: class ...
- JavaSE基础二十:Java 多线程(线程基础知识、Java 多线程、Java 实现多线程(继承 Thread 类、实现 Runnable 接口、实现 Callable 接口))
本章目录 1.基础知识准备 2.Java 多线程概述 3.Java 实现多线程 3.1.继承 Thread 类 如何开启新线程 Thread 类常用方法 多线程中的同步 Thread 类同步方法 多线 ...
- Java中继承thread类与实现Runnable接口的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 在实际应用中, ...
- 多线程中继承Thread 类和实现Runnable 接口的区别
网上看了很多多线程里继承Thread 类和实现Runnable 接口的区别,大同小异,说下我的观点吧 区别一 创建线程的方式不同: 实现Runnable接口是代理模式,交给Thread()类去star ...
- 使用Runnable接口创建线程,很简单
大家好,今天分享.使用Runnable接口创建线程 首先Java创建线程可以通过三种方法: 即: 1.继承Thread类创建线程类(重点) 2.通过Runnable接口创建线程类(重点) 3.通过Ca ...
- java多线程(一)-Thread类和Runnable接口
public class Thread extends Object implements Runnable Thread通过实现Runnable实现多态关系. Java中实现多线程,最基本2种方式: ...
- 创建线程的两种方式:继承Thread类和实现Runnable接口
第一种方式:继承Thread类 步骤:1.定义类继承Thread 2.覆写Threa类的run方法. 自定义代码放在run方法中,让线程运行 3.调用线程的star方法, 该线程有两个作用:启动线程, ...
- 线程的应用-实现Runnable接口创建线程
如果自己的类已经extends另一个类,就无法直接extends Thread,此时,可以实现一个Runnable接口 public class MyThread extends OtherClass ...
- Java并发之Thread类的使用
一.线程的几种状态 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以下这几个状态:创建(new).就绪(runnable).运行(running).阻塞(blocked).time wa ...
最新文章
- Office2010启动慢的解决方法
- No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
- jquery name选择器_Jquery--1
- 基于R语言的贝叶斯网络模型、现代贝叶斯统计学方法
- GPU算力时代的新场景
- minist数据集图片查看
- 新版itunes不显示图书_告别 iTunes!苹果新版mac操作系统正式上线,12大升级亮点解读...
- 梯形法则 matlab代码,matlab第二章常微分方程的数值解法
- win10计算机管理员的权限才能删除,Win10文件夹删除不了需要管理员权限怎么办?Win10文件夹删除不了需要管理员权限的解决方法...
- Java swing的主题风格设置
- vscode连接服务器不用每次都输入密码
- 如何让使用小博通蓝牙BK3432的鲁哇客智能挪车号码牌,一节钮扣电池工作一年
- 企业建行手机银行怎么对公转账限额
- html表格里面怎么合并单元格的快捷键,excel合并单元格快捷键是什么
- 酒越陈越醇,OPPO Reno越更越香
- 净重新分类指数NRI的计算
- SUMO(五)—— TraCI练习
- matlab合并两个矩阵。
- 过去分词表完成或者被动完成
- 2022北京智源大会中关村昇腾人工智能产业分论坛:汇聚智慧星火 构建AI新生态...
热门文章
- 如何在 MacOS 环境下搭建 SVN 服务端环境
- mysql在计算机管理中的路径怎么修改_称重软件中的数据修改怎么知晓?
- Python中的符号
- ftp主要完成与远程计算机的连接,2015计算机三级《网络技术》复习重点:远程登录服务和FTP服务...
- 选择排序 自带时间复杂度分析
- python ks值计算_利用Python计算KS的实例详解
- c语言怎么输入3个数输出最大值
- 计算机组成原理唐朔飞课后答案第六章,计算机组成原理第六章部分课后题答案(唐朔飞版)...
- 计算机主机箱外部介绍图,电脑的主机结构是怎样的 电脑主机结构图【图文】...
- yolov4论文_Alexey 大神接棒,YOLOv4 重磅来袭!快来一睹论文真容吧!| 原力计划...