JAVA实现多线程的两种方法实例分享

 更新时间:2013年08月12日 11:30:34   作者:  
这篇文章介绍了JAVA实现多线程的两种方法实例分享,有需要的朋友可以参考一下
java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就结束了。一旦一个线程执行完毕,这个实例就不能再重新启动,只能重新生成一个新实例,再启动一个新线程。
  Thread类是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法:
复制代码 代码如下:

  Thread t = new Thread();
  t.start();

  start()方法是一个native方法,它将启动一个新线程,并执行run()方法。Thread类默认的run()方法什么也不做就退出了。注意:直接调用run()方法并不会启动一个新线程,它和调用一个普通的java方法没有什么区别。
  因此,有两个方法可以实现自己的线程:
  方法1:自己的类extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:
复制代码 代码如下:

  public class MyThread extends Thread {
  public run() {
  System.out.println("MyThread.run()");
  }
  }

  在合适的地方启动线程:new MyThread()。start();
  方法2:如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口:
复制代码 代码如下:

  public class MyThread extends OtherClass implements Runnable {
  public run() {
  System.out.println("MyThread.run()");
  }
  }

  为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例:
复制代码 代码如下:

  MyThread myt = new MyThread();
  Thread t = new Thread(myt);
  t.start();

  事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run(),参考JDK源代码:
复制代码 代码如下:

  public void run() {
  if (target != null) {
  target.run();
  }
  }

相关文章

  • java中文分词之正向最大匹配法实例代码

    java中文分词之正向最大匹配法实例代码

    中文分词应用很广泛,网上也有很多开源项目,下面这篇文章主要给大家介绍了关于java中文分词之正向最大匹配法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • springboot整合minio实现文件存储功能

    springboot整合minio实现文件存储功能

    MinIO 是一个基于Apache License v2.0开源协议的对象存储服务,它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,本文给大家介绍了springboot整合minio实现文件存储功能,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • SpringBoot2.x 集成腾讯云短信的详细流程

    SpringBoot2.x 集成腾讯云短信的详细流程

    本文主要对SpringBoot2.x集成腾讯云短信进行简单总结,其中SpringBoot使用的2.4.5版本,本文通过业务流程图实例代码相结合给大家介绍的非常详细,需要的朋友参考下吧
    2021-06-06
  • SpringBoot之如何正确、安全的关闭服务

    SpringBoot之如何正确、安全的关闭服务

    这篇文章主要介绍了SpringBoot之如何正确、安全的关闭服务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java struts2捕获404错误的方法汇总

    Java struts2捕获404错误的方法汇总

    这篇文章主要为大家详细汇总了Java struts2捕获404错误的常用方法,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Java设计模式中的装饰器模式简析

    Java设计模式中的装饰器模式简析

    这篇文章主要介绍了Java设计模式中的装饰器模式简析,装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象添加功能,通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生对应的子类来扩展,抑或是使用对象组合的方式,需要的朋友可以参考下
    2023-12-12
  • 一文彻底搞定Java哈希表和哈希冲突

    一文彻底搞定Java哈希表和哈希冲突

    本文介绍了什么是哈希表?什么是哈希函数?什么是哈希冲突?三个问题的解决方案,文中有非常详细的代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Java如何使用正则表达式从字符串中提取数字

    Java如何使用正则表达式从字符串中提取数字

    这篇文章主要介绍了Java如何使用正则表达式从字符串中提取数字问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 为什么JDK8中HashMap依然会死循环

    为什么JDK8中HashMap依然会死循环

    这篇文章主要介绍了为什么JDK8中HashMap依然会死循环,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Spring Boot配置线程池拒绝策略的场景分析(妥善处理好溢出的任务)

    Spring Boot配置线程池拒绝策略的场景分析(妥善处理好溢出的任务)

    本文通过实例代码给大家介绍下如何为线程池配置拒绝策略、如何自定义拒绝策略。对Spring Boot配置线程池拒绝策略的相关知识感兴趣的朋友一起看看吧
    2021-09-09

最新评论