Java使用Thread和Runnable的线程实现方法比较

 更新时间:2019年10月14日 11:48:20   作者:cakincqm  
这篇文章主要介绍了Java使用Thread和Runnable的线程实现方法,结合实例形式对比分析了Java使用Thread和Runnable实现与使用线程的相关操作技巧,需要的朋友可以参考下

本文实例讲述了Java使用Thread和Runnable的线程实现方法。分享给大家供大家参考,具体如下:

一 使用Thread实现多线程模拟铁路售票系统

1 代码

public class ThreadDemo
{
  public static void main( String[] args )
  {
    TestThread newTh = new TestThread( );
    // 一个线程对象只能启动一次
    newTh.start( );
    newTh.start( );
    newTh.start( );
    newTh.start( );
  }
}
class TestThread extends Thread
{
  private int tickets = 5;
  public void run( )
  {
    while( tickets > 0 )
    {
      System.out.println( Thread.currentThread().getName( ) + " 出售票 " + tickets );
      tickets -= 1;
    }
  }
}

2 运行

Thread-0 出售票 5
Thread-0 出售票 4
Thread-0 出售票 3
Thread-0 出售票 2
Thread-0 出售票 1
Exception in thread "main" java.lang.IllegalThreadStateException
    at java.lang.Thread.start(Thread.java:708)
    at ThreadDemo.main(ThreadDemo.java:16)

3 说明

一个线程只能启动一次

二 main方法中产生4个线程

1 代码

public class ThreadDemo
{
  public static void main(String[]args)
  {
    // 启动了四个线程,分别执行各自的操作
    new TestThread( ).start( );
    new TestThread( ).start( );
    new TestThread( ).start( );
    new TestThread( ).start( );
  }
}
class TestThread extends Thread
{
  private int tickets = 5;
  public void run( )
  {
    while (tickets > 0)
    {
      System.out.println(Thread.currentThread().getName() + " 出售票 " + tickets);
      tickets -= 1;
    }
  }
}

2 运行

Thread-0 出售票 5
Thread-0 出售票 4
Thread-0 出售票 3
Thread-0 出售票 2
Thread-0 出售票 1
Thread-1 出售票 5
Thread-1 出售票 4
Thread-1 出售票 3
Thread-1 出售票 2
Thread-1 出售票 1
Thread-2 出售票 5
Thread-2 出售票 4
Thread-2 出售票 3
Thread-2 出售票 2
Thread-2 出售票 1
Thread-3 出售票 5
Thread-3 出售票 4
Thread-3 出售票 3
Thread-3 出售票 2
Thread-3 出售票 1

三 使用Runnable接口实现多线程,并实现资源共享

1 代码

public class RunnableDemo
{
  public static void main( String[] args )
  {
    TestThread newTh = new TestThread( );
    // 启动了四个线程,并实现了资源共享的目的
    new Thread( newTh ).start( );
    new Thread( newTh ).start( );
    new Thread( newTh ).start( );
    new Thread( newTh ).start( );
  }
}
class TestThread implements Runnable
{
  private int tickets = 5;
  public void run( )
  {
    while( tickets > 0 )
    {
      System.out.println( Thread.currentThread().getName() + " 出售票 " + tickets );
      tickets -= 1;
    }
  }
}

2 运行

Thread-0 出售票 5
Thread-0 出售票 4
Thread-0 出售票 3
Thread-0 出售票 2
Thread-0 出售票 1

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • Java实现pdf文件合并的使用示例

    Java实现pdf文件合并的使用示例

    本文主要介绍了Java实现pdf文件合并的使用示例,主要是将需要合并的pdf文件都拷贝到指定目录a中,调用该工具类将该目录作为第一个参数,第二个参数传入输出文件对象即可,感兴趣的可以了解一下
    2023-12-12
  • SpringMVC实现简单跳转方法(专题)

    SpringMVC实现简单跳转方法(专题)

    这篇文章主要介绍了SpringMVC实现简单跳转方法(专题),详细的介绍了SpringMVC跳转的几种方法,非常具有实用价值,需要的朋友可以参考下
    2018-03-03
  • spring boot教程之产生的背景及其优势

    spring boot教程之产生的背景及其优势

    这篇文章主要介绍了spring boot教程之产生的背景及其优势的相关资料,需要的朋友可以参考下
    2022-08-08
  • JavaWeb中异步交互的关键Ajax详解

    JavaWeb中异步交互的关键Ajax详解

    这篇文章主要给大家介绍了关于JavaWeb中异步交互关键Ajax的相关资料,在javaweb中,ajax是前后台交互的技术,可以实现异步请求,不用刷新整个页面就可以完成操作,需要的朋友可以参考下
    2023-07-07
  • 基于SpringBoot和Vue写一个2048小游戏

    基于SpringBoot和Vue写一个2048小游戏

    创建一个基于 Java Spring Boot 后端和 Vue 前端的 2048 游戏,可以按照以下步骤进行,这个项目将包括后端(用来处理游戏逻辑)和前端(用来显示游戏界面和与用户交互),感兴趣的小伙伴可以参考本文自己动手尝试一下
    2024-08-08
  • 深入解析Andoird应用开发中View的事件传递

    深入解析Andoird应用开发中View的事件传递

    这篇文章主要介绍了深入解析Andoird应用开发中View的事件传递,其中重点讲解了ViewGroup的事件传递流程,需要的朋友可以参考下
    2016-02-02
  • idea如何debug看springsecurity的过滤器顺序

    idea如何debug看springsecurity的过滤器顺序

    这篇文章主要介绍了idea如何debug看springsecurity的过滤器顺序,文中通过图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-04-04
  • springboot+spring data jpa实现新增及批量新增方式

    springboot+spring data jpa实现新增及批量新增方式

    这篇文章主要介绍了springboot+spring data jpa实现新增及批量新增方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringBoot解析自定义yml文件的流程步骤

    SpringBoot解析自定义yml文件的流程步骤

    这篇文章主要介绍了SpringBoot解析自定义yml文件的流程步骤,文章通过代码示例和图文结合的方式给大家介绍的非常详细, 对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-06-06
  • java 将字符串追加到文件已有内容后面的操作

    java 将字符串追加到文件已有内容后面的操作

    这篇文章主要介绍了java 将字符串追加到文件已有内容后面的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08

最新评论