java 创建线程

Java中,线程也是一种对象,但不是任何对象都可以成为线程。

只有实现了Runnable接口或继承了Thread类的对象才能成为线程。

继承Thread类

//格式:
class 类名 extends Thread//从Thread类扩展出子类
{属性方法修饰符 run(){//覆写Thread类里的run()方法通过线程处理的程序}
}

例子:

package com.thread;
//Thread存放在java.lang类库里,但并不需要加载java.lang类库,因为它会自动加载。
public class Test {public static void main(String args[]){new TestThread().start();//启动线程必须要调用Thread类中的start()方法,//调用了start()方法,也就是调用了run()方法。for(int i = 0; i < 5; ++i) {System.out.println("main 线程在运行");}}
}
class TestThread extends Thread
{public void run() {//run()方法是定义在Thread类里的一个方法,//因此把线程的程序代码编写在run()方法内,所做的就是覆写的操作。for(int i = 0; i < 5; ++i) {System.out.println("TestThread在运行");}}
}
/*main 线程在运行
TestThread在运行
TestThread在运行
TestThread在运行
TestThread在运行
TestThread在运行
main 线程在运行
main 线程在运行
main 线程在运行
main 线程在运行
*/

实现Runnable接口

Java程序只允许单一继承,一个子类只能有一个父类。

所以,在Java中如果一个类继承了某一个类,同时又想采用多线程技术,就不能通过继承Thread类的方法产生线程。

这时需要用Runnable接口来创建线程。

class 类名 implements Runnable//实现Runnable接口
{属性方法修饰符 run(){//覆写Thread类里的run()方法以线程处理的程序;}
}

下面的例子:

为什么实现了Runnable接口还需要调用Thread类中的start()方法才能启动多线程?

通过看JDK文档可以知道,Runnable接口中只有一个run()方法,并没有start()方法。所以要用Thread类中的start()方法来启动多线程。

Thread里有一个构造方法:public Thread(Runnable target),在这个构造方法中,用一个Runnable接口的实例化对象作为参数去实例化Thread类对象。

package com.thread;public class Test {public static void main(String args[]){TestThread t = new TestThread();//实例化一个TestThread类的对象new Thread(t).start();//通过TestThread类实例化一个Thread类的对象,之后调用start()方法启动多线程for(int i = 0; i < 5; ++i) {System.out.println("main 线程在运行");}}
}
class TestThread implements Runnable
{public void run() {for(int i = 0; i < 5; ++i) {System.out.println("TestThread在运行");}}
}
/*main 线程在运行
main 线程在运行
main 线程在运行
main 线程在运行
main 线程在运行
TestThread在运行
TestThread在运行
TestThread在运行
TestThread在运行
TestThread在运行
*/

java基础 通过继承Thread类和实现Runnable接口创建线程相关推荐

  1. JavaSE基础二十:Java 多线程(线程基础知识、Java 多线程、Java 实现多线程(继承 Thread 类、实现 Runnable 接口、实现 Callable 接口))

    本章目录 1.基础知识准备 2.Java 多线程概述 3.Java 实现多线程 3.1.继承 Thread 类 如何开启新线程 Thread 类常用方法 多线程中的同步 Thread 类同步方法 多线 ...

  2. Java中继承thread类与实现Runnable接口的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中, ...

  3. 多线程中继承Thread 类和实现Runnable 接口的区别

    网上看了很多多线程里继承Thread 类和实现Runnable 接口的区别,大同小异,说下我的观点吧 区别一 创建线程的方式不同: 实现Runnable接口是代理模式,交给Thread()类去star ...

  4. 创建线程的两种方式:继承Thread类和实现Runnable接口

    第一种方式:继承Thread类 步骤:1.定义类继承Thread 2.覆写Threa类的run方法. 自定义代码放在run方法中,让线程运行 3.调用线程的star方法, 该线程有两个作用:启动线程, ...

  5. Java多线程(2)--Thread类继承和Runnable接口创建线程

    Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来体现. Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run() ...

  6. Java基础:继承、多态、抽象、接口

    第一讲    继承 一.继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 2.通过extends关键字可以实现类与类的 ...

  7. Java基础复习-4-抽象类、内部类、接口

    目录 抽象类 一.概述 二.代码实例 **实例解析** 内部类 内部类分为:成员内部类,局部内部类以及匿名内部类 不同种类类的修饰符 局部内部类的final 匿名内部类(重要) 匿名对象是什么呢?请看 ...

  8. android 如何extends 多个,Android多线程:继承Thread类 使用解析(含实例教程)

    前言 在Android开发中,多线程的使用十分常见 今天,我将全面解析多线程其中一种常见用法:继承Thread类. 目录 示意图 1. 简介 示意图 2. 使用讲解 2.1 使用步骤 示意图 2.2 ...

  9. Java多线程-继承Thread类,示例

    继承Thread类,调用start方法启动线程. 示例, public class ThreadTest extends Thread {public ThreadTest(String name){ ...

最新文章

  1. 【青少年编程】【三级】克隆猫游戏
  2. linux perl开发工具,专家推荐 几款常用Perl开发工具
  3. 句子分类_Bert做新闻标题文本分类
  4. 灰度拉伸python_灰度变换之灰度线性拉伸(算法1)
  5. spring整合SpringMVC Controller 和 Struts2 Action控制层Bean的默认作用域
  6. Protel 99se 快捷键
  7. 仅三行代码的按键扫描程序,绝对够经典(秒杀郭天祥讲解的按键扫描)
  8. ES摄入性能优化(插入提高了2倍+ 17w/s到37w/s)
  9. 800万超优质壁纸免费等你来拿!全世界最良心的壁纸站!
  10. 力扣简单题合集(带答案)
  11. 【苹果推软件】Apple IOS推送证书 如何创建CSR文件
  12. Tomcat原理 (持续更新
  13. JEOL:发布新的扫描电子显微镜JSM-IT700HR
  14. 【Linux-SVN】安装 SVN Server
  15. php调用接口发送短信
  16. 基于STC89C52单片机的远程控制系统
  17. Flash 透明播放
  18. 计算机组装和维护_如何构建自己的计算机,第二部分:组装在一起
  19. 如何解决python中打印数据的时候显示不全?
  20. 2015(2016届)校园招聘季——中兴 篇

热门文章

  1. 九、华为鸿蒙HarmonyOS应用开发之Java UI框架、常用Image组件使用
  2. php window.onload,tp_window.onload+相应操作
  3. 中南大学12月13日考c语言,中南大学2010级C语言试卷
  4. 反序列化的时候出现eof exception_FastJson序列化时候出现了$ref?还不赶紧学习下...
  5. python简单实用案例_Python 21 Django 实用小案例1
  6. html5 canvas 图像预览,html5-canvas 加载并显示图像
  7. 腾讯视频下载安装链接_腾讯视频怎么上传视频
  8. 如何实现多路海康大华等RTSP数据转RTMP推送
  9. dataTable删除行
  10. @async 没有异步_玩转javascript异步编程