Java多线程继承Thread类详解第2/2页

 更新时间:2016年06月19日 15:46:59   投稿:hebedich  
Java多线程的两种实现方式:继承Thread类 & 实现Runable接口,今天我们来学习下继承Thread类,希望大家能够喜欢

同样给大家分享下网友的实例

package JavaThread;class firstThread extends Thread{ private String name = null; public firstThread(String str) {  this.name = str; } public void run() {  for(int i=1;i<=3;i++)  {   System.out.println("线程"+this.name+"第"+i +"执行");   try {    Thread.sleep(50);   } catch (InterruptedException e) {        e.printStackTrace();   }  } }}class secondThread extends Thread{ private String name = null; public secondThread(String s) {  this.name = s; } public void run() {  for(int i=1;i<=3;i++)  {   System.out.println("线程"+this.name+"第"+i +"执行");   try {    Thread.sleep(50);    Thread.yield();   } catch (InterruptedException e) {     e.printStackTrace();   }  } }}public class TestThread{ public static void main(String[] args) {  firstThread p = new firstThread("first");  secondThread pth = new secondThread("second");  p.setPriority(4);  pth.setPriority(9);  p.start();  pth.start(); }}

简单讲下继承Thread类

                步骤:
                a,定义类继承Thread类。
                b,覆盖Thread类中的run方法,将需要被多线程执行的代码定义到该run方法当中。
                c,建立Thread类的子类创建线程对象。
                d,调用start方法,开启线程并调用该线程的run方法。

        下面有个示例来让你直观的了解怎么用继承Thread类的方式来创建线程。

  /*  * 示例:创建三个线程,每过2秒打印一下线程的名称,打印三次  */  public class Thread1 extends Thread{    private final int MAX = 3;//最大打印次数    private int COUNT = 1;//计数    private final int TIME = 2;//间隔时间      //接收线程名称    public Thread1(String name) {      super(name);    }    //覆盖run方法,在里面写我们要执行的代码    public void run() {      while(COUNT<= MAX){        System.out.println(this.getName());        COUNT++;        //每次打印后,在一段时间后再打印        try {          Thread.sleep(TIME*1000);        } catch (InterruptedException e) {          e.printStackTrace();        }      }    }    public static void main(String[] args) {      Thread1 t1 = new Thread1("线程1");//创建线程      Thread1 t2 = new Thread1("线程2");      Thread1 t3 = new Thread1("线程3");      t1.start(); //开启线程      t2.start();      t3.start();      //也可以使用下面这种方式书写      //new Thread1("线程4").start();    }  }

相关文章

  • MyBatis 详细讲解动态 SQL的使用

    MyBatis 详细讲解动态 SQL的使用

    动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦
    2022-04-04
  • java对象对比之comparable和comparator的区别

    java对象对比之comparable和comparator的区别

    今天给大家带来的是关于Java的相关知识,文章围绕着comparable和comparator的区别展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • JPA之QueryDSL-JPA使用指南

    JPA之QueryDSL-JPA使用指南

    Springdata-JPA是对JPA使用的封装,Querydsl-JPA也是基于各种ORM之上的一个通用查询框架,使用它的API类库可以写出Java代码的sql,下面就来介绍一下JPA之QueryDSL-JPA使用指南
    2023-11-11
  • Java SpringMVC拦截器与异常处理机制详解分析

    Java SpringMVC拦截器与异常处理机制详解分析

    SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发
    2021-10-10
  • Springboot HTTP如何调用其他服务

    Springboot HTTP如何调用其他服务

    这篇文章主要介绍了Springboot HTTP如何调用其他服务,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java中JVM中如何存取数据和相关信息详解

    java中JVM中如何存取数据和相关信息详解

    这篇文章主要介绍了JVM中如何存取数据和相关信息详解,Java源代码文件(.java后缀)会被Java编译器编译为字节码文件,然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。JVM中怎么存取数据和相关信息呢?,需要的朋友可以参考下
    2019-06-06
  • 浅谈JVM系列之JIT中的Virtual Call

    浅谈JVM系列之JIT中的Virtual Call

    什么是Virtual Call?Virtual Call在java中的实现是怎么样的?Virtual Call在JIT中有没有优化?所有的答案看完这篇文章就明白了。
    2021-06-06
  • Maven添加reactor依赖失败的解决方案

    Maven添加reactor依赖失败的解决方案

    起初是自己在学spring boot3,结果到了reactor这一部分的时候,在项目的pom.xml文件中添加下列依赖报错,接下来通过本文给大家介绍Maven添加reactor依赖失败的解决方案,需要的朋友可以参考下
    2024-06-06
  • Spring6整合JUnit的详细步骤

    Spring6整合JUnit的详细步骤

    这篇文章主要介绍了Spring6整合JUnit的详细步骤,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • springboot+thymeleaf找不到视图的解决方案

    springboot+thymeleaf找不到视图的解决方案

    这篇文章主要介绍了springboot+thymeleaf找不到视图的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论