zoukankan      html  css  js  c++  java
  • 启动线程,start和run的区别

    每个线程都有要执行的任务。线程的任务处理逻辑可以在Tread类的run实例方法中直接实现或通过该方法进行调用,因此

    run()相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。

    而start()的作用是启动相应的线程。启动一个线程实际是请求Java虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。start()调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远也不会运行。

    下面看一个例子:

    复制代码
     1 /**
     2  * run()相当于线程的任务处理逻辑的入口方法
     3  * start()的作用是启动相应的线程
     4  * @author yiRain
     5  *
     6  */
     7 public class startAndRun {
     8     public static void  main(String[] args) {
     9         Thread t = new Thread(){
    10             public void run(){
    11                 world();
    12             }
    13         };
    14         
    15         t.start();
    16         //t.run();
    17         System.out.print(" Hello ");
    18     }
    19     
    20     static void world(){
    21         System.out.print(" world ");
    22     }
    23 
    24 }
    复制代码

    输出结果:

     相应的调用t.run(),只是调用一个实例的方法而已,并未启动线程,因此run()会被立即执行

    输出结果:

  • 相关阅读:
    小程序 ----- 使用less框架
    小程序 ------ 选择器(十)
    小程序 ------ 样式(九)
    小程序 --- 事件绑定(八)
    记一次接口数据获取最大最小值
    flutter——命名路由跳转传值
    Dart——库
    Dart——基础
    人口普查小结
    人口普查-运行截图
  • 原文地址:https://www.cnblogs.com/xhlwjy/p/11717684.html
Copyright © 2011-2022 走看看