当前位置:  编程技术>java/j2ee

java中thread线程start和run的区别

    来源: 互联网  发布时间:2014-11-04

    本文导语:  最近看到一个题目,代码如下: 代码如下:public static void main(String args[]) {Thread t = new Thread() {public void run() {pong();}}; t.run();System.out.println("ping");}static void pong() {System.out.println("pong");} 问,结果会输出什么? 我运行了很多次,结果...

最近看到一个题目,代码如下:

代码如下:

public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.println("ping");
}
static void pong() {
System.out.println("pong");
}

问,结果会输出什么?

我运行了很多次,结果都是pong ping。后来终于发现了关键点所在,线程对象t,调用的不是start()方法,而是run()方法。后来我开断点模式debug,发现调用run()方法,整个程序只有一个线程,而调用start()方法之后,程序就会多出一个线程。这时才有和主线程争cpu,可能出现多种结果的情况,但由于下面输出方法很快就被执行了,所以基本上都是“ping pong”的输出。

所以run()和start()的区别就是:
run()是Runnable接口中定义的一个方法,是为了让客户程序员在这个方法里写自己的功能代码的。直接调用和普通的类调用自己的成员方法是没有任何区别的。
而start()则是线程开始运行的标志,当这个方法被调用后,程序中才会多出一个独立的线程,接着便是执行run()方法。

所以我觉得,自己要写单独的线程,最好还是继承Thread来做,如果是实现接口的话,到主线程里,还是要new Thread(new YourRunnableClass())来调用,感觉很不方便。


    
 
 

您可能感兴趣的文章:

  • Java中多线程相关类Thread介绍
  • java 线程,对当前线程(非主线程)调用sleep,为什么主线程(窗口)也没反应了
  • 输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程
  • java基本教程之多线程基本概念 java多线程教程
  • 请问在java多线程中,是只有run(){}内的代码运行在一个新线程下呢?还是这个类中的代码都运行在一个新线程下?
  • 用什么方法可以查看在windows下jvm下运行当前java程序的线程数和线程名称?
  • java多线程编程之捕获子线程异常示例
  • java线程怎么调用java的application.class?
  • java多线程编程之使用runnable接口创建线程
  • java线程中如何降低CPU的占用率?我这几个线程会不会死锁?
  • java线程之使用Runnable接口创建线程的方法
  • java 多线程问题
  • Java线程的相关方法详细解析
  • 紧急求助java多线程编程!!!!!!!!!!!!!
  • java线程,回答得比较深就好了
  • Java多线程之中断线程(Interrupt)的使用详解
  • 关于java线程调度优先级
  • java基本教程之线程让步 java多线程教程
  • Java多线程单元测试 Thread Weaver
  • 求教JAVA中的延时函数!不是用于线程中的!
  • java中多线程的问题
  • java命名空间java.lang类thread的类成员方法: thread定义及介绍
  • 关于运行JAVA exception in thread "mian"
  • java命名空间java.lang类thread的类成员方法: max_priority定义及介绍
  • Java Thread
  • java命名空间java.lang枚举thread.state的类成员方法: new定义及介绍
  • 我用javac编译HelloWorldapp.java无错误,但运行时出现该错误:Exception in thread "main" java.lang.NoClassDefFoundError: helloworldapp
  • java命名空间java.lang枚举thread.state的类成员方法: terminated定义及介绍
  • 这个错误是什么原因Exception in thread "main" java.lang.NoClassDefFoundError:
  • java命名空间java.lang类thread的类成员方法: getdefaultuncaughtexceptionhandler定义及介绍
  • 菜鸟求救!(exception in thread "main" java.lang.NoClassDefFoundError)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.swing枚举swingworker.statevalue的类成员方法: started定义及介绍
  • 关于Java Web Start的问题,
  • java命名空间javax.sound.midi类shortmessage的类成员方法: start定义及介绍
  • 代替Java Web Start Getdown
  • java命名空间javax.sound.sampled类lineevent.type的类成员方法: start定义及介绍
  • java web start实例代码COPY不了,怎么办?
  • java命名空间javax.management.monitor类monitor的类成员方法: start定义及介绍
  • 谁帮忙把Java Web Start的快捷方式发给我?
  • java命名空间javax.management.monitor接口monitormbean的类成员方法: start定义及介绍
  • 请问java web start和jre分别是什么意思啊?!(请路过的前辈赐教!!!)
  • java命名空间javax.swing类timer的类成员方法: start定义及介绍
  • 用Java Web Start + SWT还是用QT?
  • java命名空间javax.swing.text.html类html.attribute的类成员方法: start定义及介绍
  • 请问:java web start 是什么呢?
  • java命名空间javax.xml.stream接口xmlstreamconstants成员方法: start_document定义参考
  • 请问这个错误是撒啊:Failed to start Java VM: 3 (启动jbuilder5时就弹出来)
  • java命名空间javax.xml.stream接口xmlstreamconstants成员方法: start_element定义参考
  • 安装了J2EESDK1.4了,也安装了JAVA WEB START,可是我不知道怎样才可在EXPLOERE中运行我的JAVA程序,
  • java命名空间javax.management.timer类timer的类成员方法: start定义及介绍
  • JB4安装完。运行时出现Failed to start Java VM:2 。怎么办!系统WIN2000pro。
  • java命名空间java.awt类font的类成员方法: layout_no_start_context定义及介绍
  • 曾用過java web start得朋友請告訴我!!以下錯誤是什么原因導致的!!謝謝!!
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3