JAVA-基础语法-多线程基础-start和run

举报
Photon2 发表于 2020/12/23 13:48:07 2020/12/23
【摘要】 JAVA-基础语法-多线程基础-start和run

start 和 run?

看源码会看到start()方法内部调用了一个private native void start0()方法,native修饰符表示这个方法 是由JVM虚拟机内部的C代码实现的,不是由Java代码实现的。

用start方法才能真正启动线程,此时线程会处于就绪状态,一旦得到时间片,则会调用线程的run方法进入运行状态。

而run方法只是普通方法,如果直接调用run方法,程序只会按照顺序执行主线程这一个线程。

public class Test {
   public static void main(String[] args) {
       Thread thread = new Thread() {
           public void run() {
               pong();
          }
      };
       //此处用start,则谁先谁后打印完全不一定
       thread.start();
       //此处用run,则必定按照顺序从上往下执行
       thread.run();
       System.out.println("ping");
  }

   static void pong() {
       System.out.println("pong");
  }
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。