精华内容
下载资源
问答
  • java多线程run和start方法的区别

    万次阅读 多人点赞 2018-01-24 09:05:36
    1 java多线程有两个常见的方法start方法和run方法。正常来说run方法是多线程的线程体。 2 创建线程,可以使用extends Threadimplements Runnable 如:public class Thread1 extends Thread{ @...
    1 java中多线程有两个常见的方法start方法和run方法。正常来说run方法是多线程的线程体。
    




    2 创建线程,可以使用extends Thread和implements Runnable
    如:public class Thread1 extends Thread{


    @Override
    public void run() {
    // TODO Auto-generated method stub
    //super.run();
    System.out.println("当前线程:"+Thread.currentThread().getName()+" 运行了run方法");
    }


    }


    3 线程的使用。可以通过new Thread().start()方法来启动。
    如:Thread1 thread1=new Thread1();
        thread1.start();//这是创造新的线程


    4 如果执行start方法,则会在主线程中重新创建一个新的线程,等得到cpu的时间段后则会执行所对应的run方法体的代码。


    5 如果创建了线程对象后,执行run方法,则还是在主线程中执行,会和调用普通方法一样。按照顺序执行。
    如:Thread1 thread1=new Thread1();
        thread1.run();//这是普通方法,还是在主线程中




    !!!故:调用线程的start方法是创建了新的线程,在新的线程中执行。
           调用线程的run方法是在主线程中执行该方法,和调用普通方法一样,
    展开全文
  • java多线程run()和start()的区别

    千次阅读 2018-10-16 22:52:54
    其实,run()和start()区别很简单。 当你启动线程,使用start(),系统会把run()方法当成线程执行体来处理,这是正常的,也是正确的情况。但是,当你启动线程时,调用run()方法,系统run()方法会立即执行,但是这时候...

    其实,run()和start()区别很简单。

    当你启动线程,使用start(),系统会把run()方法当成线程执行体来处理,这是正常的,也是正确的情况。但是,当你启动线程时,调用run()方法,系统run()方法会立即执行,但是这时候系统会把run()方法当成普通的方法,线程对象也当成一个普通对象。

    不理解我上面说的话?那我就在解释一下。

    第一个问题,为什么要有多线程。这个问题的答案可以搜索到很多。我这边给出我理解的,不怎么官方的答案:创建一个线程,就是为了在原有主线程的基础上,创建一个新的任务,以达到想要的效果。

    既然如此,如果我们调用run()方法,系统会把run()方法当成普通的方法,就不能达到创建一个新的任务的目的。

    第二个问题,线程如何创建。最常见的有两种,继承Thread类和实现Runnable接口。当然还有像 实现Callable接口 的方式创建线程。这些方法,都类似的要把run()方法重写,把run()方法包装成线程执行体。(实现Callable接口 的方法,要把call()包装成线程执行体)。可见run()只是线程类的一个方法。

    既然如此,如果要启动一个线程,当然要调用strat(),如果调用run(),则是调用线程类的一个run()方法,这在系统看来,不过是调用一个很普通的类(线程类)中的一个普通的方法(run()方法),会一视同仁的在主线程上面执行。

     

    更多内容请关注微信公众号“外里科技

    官方公众号外里科技
    运营公众号英雄赚
    微信wxid_8awklmbh1fzm22
    QQ1247408032
    开源代码https://gitee.com/B_T/beimi

     

    展开全文
  • java线程run和start方法的区别

    万次阅读 2015-05-31 14:50:55
    1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 ...
    java线程中run和start方法的区别

    1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码:
    通过调用Thread类的start()方法来启动一个线程,
    这时此线程是处于就绪状态,
    并没有运行。
    然后通过此Thread类调用方法run()来完成其运行操作的,
    这里方法run()称为线程体,
    它包含了要执行的这个线程的内容,
    Run方法运行结束,
    此线程终止,
    而CPU再运行其它线程。

    2.run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码:
    而如果直接用Run方法,
    这只是调用一个方法而已,
    程序中依然只有主线程--这一个线程,
    其程序执行路径还是只有一条,

    这样就没有达到写线程的目的。


    Thread和Runnable的区别:
    如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。


    实现Runnable接口比继承Thread类所具有的优势:

    1):适合多个相同的程序代码的线程去处理同一个资源

    2):可以避免java中的单继承的限制

    3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。


    提醒一下大家:main方法其实也是一个线程。在java中所以的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。
     

    在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个JVM实际就是在操作系统中启动了一个进程。


    在java程序中,只要前台有一个线程在运行,整个java程序进程不会小时,所以此时可以设置一个后台线程,这样即使java进程小时了,此后台线程依然能够继续运行。

    参考这个链接

    展开全文
  • 这两个问题是两个非常流行的初学者级别的多线程面试问题,这里进行详细说明,需要的朋友可以参考下: 线程中start方法与run方法的区别 在线程中,如果start方法依次调用run方法,为什么我们会选择去调用start...
    
    这篇文章主要介绍了java 线程中start方法与run方法的区别详细介绍的相关资料,在java线程中调用start方法与run方法的区别在哪里? 这两个问题是两个非常流行的初学者级别的多线程面试问题,这里进行详细说明,需要的朋友可以参考下:

    线程中start方法与run方法的区别

    在线程中,如果start方法依次调用run方法,为什么我们会选择去调用start方法?或者在java线程中调用start方法与run方法的区别在哪里?  这两个问题是两个非常流行的初学者级别的多线程面试问题。当一个Java程序员开始学习线程的时候,他们首先会学着去继承Thread类,重载run方法或者实现Runnable接口,实现run方法,然后调用Thread实例的start方法。但是当他拥有一些经验之后,他通过查看API文档或者其他途径会发现start方法内部会调用run方法,但是我们中的很多人知道面试时被问到的时候才会意识到这个问题的重要性。在这个java教程里,我们将会明白java中开启线程的时候调用start方法和run方法的不同的地方

    这篇文章是我们再起在Java多线程上发表的一些文章的后序部分,E.G. Difference between Runnable and Thread in Java AND How to solve Producer Consumer problem in Java using BlockingQueue.如果你还没有读过他们,你可能将会发现他们还是很有趣并且很有用的

    在java线程中 start与run的不同

    start与run方法的主要区别在于当程序调用start方法一个新线程将会被创建,并且在run方法中的代码将会在新线程上运行,然而在你直接调用run方法的时候,程序并不会创建新线程,run方法内部的代码将在当前线程上运行。大多数情况下调用run方法是一个bug或者变成失误。因为调用者的初衷是调用start方法去开启一个新的线程,这个错误可以被很多静态代码覆盖工具检测出来,比如与fingbugs. 如果你想要运行需要消耗大量时间的任务,你最好使用start方法,否则在你调用run方法的时候,你的主线程将会被卡住。另外一个区别在于,一但一个线程被启动,你不能重复调用该thread对象的start方法,调用已经启动线程的start方法将会报IllegalStateException异常,  而你却可以重复调用run方法

    下面是start方法和run方法的demo

    线程中的任务是打印线程传入的String值 已经当前线程的名字

    这里可以明确的看到两者的区别

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    public class DiffBewteenStartAndRun {
      
      
       public static void main(String args[]) {
      
      
         System.out.println(Thread.currentThread().getName());
         // creating two threads for start and run method call
         Thread startThread = new Thread( new Task( "start" ));
         Thread runThread = new Thread( new Task( "run" ));
      
      
         startThread.start(); // calling start method of Thread - will execute in
                     // new Thread
         runThread.run(); // calling run method of Thread - will execute in
                   // current Thread
      
      
       }
      
      
       /*
        * Simple Runnable implementation
        */
       private static class Task implements Runnable {
         private String caller;
      
      
         public Task(String caller) {
           this .caller = caller;
         }
      
      
         @Override
         public void run() {
           System.out.println( "Caller: " + caller
               + " and code on this Thread is executed by : "
               + Thread.currentThread().getName());
      
      
         }
       }
    }

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • Java线程run和start方法的区别

    千次阅读 2015-12-06 21:47:31
    Thread类中run()和start()方法的区别如下:run()方法:在本线程内调用该Runnable对象的run()方法,可以重复次调用;start()方法:启动一个线程,调用该Runnable对象的run()方法,不能次启动一个线程; package ...
  • 项目打包传到tomcat后,调用多线程的接口,Thead.start()后没有执行run方法,这是为啥,
  • java多线程run方法传参

    万次阅读 2018-09-25 20:32:40
    我们知道多线程是通过star()方法让线程处于准备就绪状态,而实际运行的业务逻辑是放在run()方法体中的,但是run()方法是没有参数的方法,实际的业务场景中,我们可能需要向方法体中传递参数,下面介绍常用的两种传参...
  • 区别:调用start方法实现多线程,而调用run方法没有实现多线程 (run没有另起线程,而start才是真正意义的新开线程) start(): 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行...
  • 主要介绍了java线程start和run的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Java多线程 start()和run()方法

    千次阅读 2017-11-13 17:18:11
    Java中的多线程有三种实现方式:1.继承Thread类,重写run方法。Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯一方法就是通过Thread类的start方法。 2.实现Runnable接口,并...
  • java多线程start方法与run方法分析

    千次阅读 2017-08-30 23:43:16
    演示图 thread1 package thread; public class thread1 extends Thread{ public thread1() { } public void run() { System.out.println("线程里面的run执行");
  • 主要介绍了Thread中start()和run()的区别,Thread类包含start()和run()方法,它们的区别是什么?下面将对此作出解答
  • 万字图解Java多线程

    万次阅读 多人点赞 2020-09-06 14:45:07
    java多线程我个人觉得是javaSe中最难的一部分,我以前也是感觉学会了,但是真正有多线程的需求却不知道怎么下手,实际上还是对多线程这块知识了解不深刻,不知道多线程api的应用场景,不知道多线程的运行流程等等,...
  • Java多线程start()和run()的区别

    千次阅读 2018-01-15 22:50:37
     Java线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。...在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞死亡:  
  • java多线程调用run和不调用run的区别

    千次阅读 2016-05-25 17:42:58
    当在java程序中创建一个线程的时候,会三种情况: ...只运行run的时候,线程的执行顺序是按代码顺序执行的,只不过执行的线程是当前线程,而不是你定义的线程,比如:你在main函数里面运行了定义了线程1、
  • java 线程run()和start()区别

    千次阅读 2018-05-25 00:03:12
    java线程启动线程有两种方式:Thread、Runnable两种方式在Java线程当中,线程通常都有五种状态,新建(创建)、就绪、运行、阻塞死亡。 1、新建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于...
  • public class T { public static void main(String args[]) { Thread t = new Thread() { public void run() { pong(); } ... t.run();... //t.start();// 如果是这行 则输出结果
  • JAVA线程中的run 和start方法

    千次阅读 2012-07-20 16:05:16
    一个线程对象生成后,如果要产生一个执行的...简单说你要做什么就你在run中完成,而如何做,什么时候做就不需要你控制 了,你只要调用start()方法,JVM就会管理这个线程对象让它产生一个线程并注册到线程处理系统中。  从
  • Java中启动线程start和run方法

    千次阅读 2018-07-21 21:31:44
    一、区别 Java中启动线程有两种方法,继承Thread类实现Runnable接口,由于Java无法实现多重...通过该方法启动线程的同时也创建了一个线程,真正实现了多线程。无需等待run()方法中的代码执行完毕,就可以接着执行...
  • Java多线程start()函数和run()函数

    千次阅读 2018-05-30 23:42:09
    线程的状态在Java中,线程通常有五种状态:创建,就绪,运行,阻塞死亡.其中:创建状态:在生成线程对象,并没有调用该对象的star方法,这时线程处于创建状态。就绪状态:当调用了线程对象的start方法之后,该线程...
  • Java创建线程有两种方法,这也是Java面试常被问到一个Java线程基础问题,不往下看你能回答出来吗...Java启动线程其中一种方式是通过调用java.lang.Thread的start()方法,而Thread实现了Runnable接口: public cla...
  •  继承Thread类是实现java多线程的一种方式,但是实际上Thread类本身实现了Runnable接口,它代表了线程的一个实例。  启动线程唯一的方法就是调用Thread类的start()方法,这时候便开启了一个新的线程。  以下附上...
  • 主要介绍了java 线程中start方法与run方法的区别详细介绍的相关资料,在java线程中调用start方法与run方法的区别在哪里? 这两个问题是两个非常流行的初学者级别的多线程面试问题,这里进行详细说明,需要的朋友可以...
  • 通过组织样例、分析源码,比较Java线程使用start和run启动的区别
  • Java中启动线程有两种方式,继承Thread类以及实现接口Runnable,由于Java无法... start():通过该方法启动线程的同时也创建了一个线程,真正实现了多线程,这是无需等待run()方法中的代码执行完毕就可以直接执行下面
  • Java多线程超详解

    万次阅读 多人点赞 2019-06-11 01:00:30
    随着计算机的配置越来越高,我们需要将进程进一步优化,细分为线程,充分提高图形化界面的多线程的开发。这就要求对线程的掌握很彻底。 那么话不多说,今天本帅将记录自己线程的学习。 线程的相关API //获取当前...
  • JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象名称,多线程实例演示,使用Runnable接口 开始挑战一些难度了,线程I/O方面的操作了,继续坚持 一.Thread 如何在自定义的代码中,...
  • 面试过程中经常会被面试官问到为什么我们调用start()方法时会执行run()方法,为什么不能直接调用run()方法,问的一头雾水,今天小编给大家介绍下Java线程start方法回调run方法的操作技巧,需要的朋友参考下吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 286,420
精华内容 114,568
关键字:

java多线程run和start

java 订阅