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

    千次阅读 2017-06-18 21:18:56
    start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦...

    Thread的start和run


    1) start:

    用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。

    2) run:

    run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。

    总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。

    展开全文
  • 目录java多线程run和start区别1.start()方法2.run()方法3.程序范例4.参考资料 java多线程run和start区别 run只是Thread里面的一个普通方法,start是启动线程的方法。 start()方法让一个线程进入就绪队列等待分配...

    java多线程中run和start区别

    run只是Thread里面的一个普通方法,start是启动线程的方法。

    start()方法让一个线程进入就绪队列等待分配 cpu, 分到 cpu 后才调用实现的run()方法。

    start()方法不能重复调用, 如果重复调用会抛出异常。
    而 run 方法是业务逻辑实现的地方, 本质上和任意一个类的任意一个成员方法并没有任何区别, 可以重复执行, 也可以被单独调用。


    1.start()方法

    start()方法来启动线程,无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;

    jvm通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。

    然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体,它包含了要执行的这个线程的内容, run方法运行结束, 此线程终止。

    然后其他线程再抢cpu的控制权接着执行,这是真正实现了多线程。


    2.run()方法

    run()方法当作普通方法的方式调用。程序还是要顺序执行,要等待run方法体执行完毕后,才可继续执行下面的代码; 程序中只有主线程——这一个线程,其程序执行路径还是只有一条。这并非多线程,还只是单线程。


    3.程序范例

    public class MyThread1 extends Thread {
        @Override
        public void run() {
            try {
                System.out.println("run threadName="+ this.currentThread().getName()+"begin");
                Thread.sleep(2000);
                System.out.println("run threadName="+this.currentThread().getName()+"end");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    
    public class Run1 {
        public static void main(String[] args) {
            final MyThread1 myThread1 = new MyThread1();
            System.out.println("begin="+System.currentTimeMillis());
            myThread1.run();
            System.out.println("end="+System.currentTimeMillis());
        }
    }
    

    在这里插入图片描述

    public class Run2 {
        public static void main(String[] args) {
            final MyThread1 myThread2 = new MyThread1();
            System.out.println("begin="+System.currentTimeMillis());
            myThread2.start();
            System.out.println("end="+System.currentTimeMillis());
        }
    }
    

    在这里插入图片描述

    4.参考资料

    java多线程中run和start区别

    展开全文
  • 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方法是在主线程中执行该方法,和调用普通方法一样,
    展开全文
  • start方法:用来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, run方法运行结束, ...
    start方法:用来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, run方法运行结束, 此线程终止, 而CPU再运行其它线程。
    run方法: 这只是调用一个方法而已, 程序中依然只有主线程--这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。
    展开全文
  • 关于多线程run和start区别

    千次阅读 2014-04-23 00:02:25
    先简单描叙一下创建线程的方式通过继承TH
  • 多线程run和start方法的区别 我们run()方法只是一个类的普通方法,调用后自动压栈执行,执行完后弹栈便可 但是我们start()方法作用开启一个分支线程,在JVM中开辟一块新的栈空间,代码执行完,自动结束,也就是...
  • Start()是启动一个新的线程,然后新的线程会调用run()方法,但是start()方法不可以重复调用,若会出现异常Exception in Thread “main” java.lang.IllegalThreadStateException.而且启动线程,会出现异步的效果,...
  • start():通过该方法启动线程的同时也创建了一个线程,真正实现了多线程,这是无需等待run()方法中的代码执行完毕就可以直接执行线程外面的代码,通过start创建的线程处于可运行状态,当得到CPU时间片后就会执行...
  • Java线程run和start方法的区别 Thread类中run()和start()方法的区别如下: run()方法:在本线程内调用该Runnable对象的run()方法,可以重复次调用; start()方法:启动一个线程,调用该Runnable对象的run()方法,...
  • start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有
  • 其中 Thread 类也是实现了 Runnable 接口,而 Runnable 接口定义了唯一的一个 run() 方法,所以基于 Thread Runnable 创建多线程都需要实现 run() 方法,是多线程真正运行的主方法。 @Functional...
  • start相当于去游乐园排队,run则相当于在玩游乐园项目
  • start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦...
  • java多线程run()和start()的区别

    千次阅读 2018-10-16 22:52:54
    其实,run()和start()区别很简单。 当你启动线程,使用start(),系统会把run()方法当成线程执行体来处理,这是正常的,也是正确的情况。但是,当你启动线程时,调用run()方法,系统run()方法会立即执行,但是这时候...
  • 文章目录线程run方法和start方法的区别第一个区别第二种区别第三种区别 线程run方法和start方法的区别 第一个区别 run方法是普通方法,并不会新创建线程start方法会创建一个新线程去执行。 run方法 public ...
  • 这两个问题是两个非常流行的初学者级别的多线程面试问题,这里进行详细说明,需要的朋友可以参考下: 线程中start方法与run方法的区别 在线程中,如果start方法依次调用run方法,为什么我们会选择去调用start...
  • start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦...
  • 区别:调用start方法bai实现多线程,而调用run方法没有实现多线程du Start: 用start方法来zhi启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的...
  • Java 线程run start区别

    2015-06-11 14:51:18
    得运行完run里面的代码整个程序才能往下进行,而如果调用start方法,线程和MAIN方法就会抢资源,打印的语句会交替出现,你把线程里的循环次数加到300,试一下依次调runstart和两次都调start方法时所出现的情况应该...
  • start方法:用于启动线程,可以实现多线程运行,无需等待run方法执行完毕后就可以继续执行下面的代码。通过调用Thread类的start方法来启动一个线程,此时线程处于就绪状态,一旦CPU有空闲就可执行run方法,run方法...
  • Thread类中run()和start()方法的区别如下: run()方法:在本线程内调用该Runnable对象的run()方法,可以重复次调用; start()方法:启动一个线程,调用该Runnable对象的run()方法,不能次启动一个线程
  • java线程run和start方法的区别

    万次阅读 2015-05-31 14:50:55
    1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 ...
  • start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。 run() : run()就普通的成员方法一样,可以被重复调用。单独调用run()的话,会在当前线程中执行run(),而并不会启动新...
  • 多线程中 start()和run()方法的区别Java线程一直是一个比较容易困扰的地方,首先,我们来认识下怎样生存线程。 认识 Thread Runnable java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。...
  • 1、当线程启动的调用了start()方法,这便可体现多线程的特性,不同线程的run方法里面的代码会交替执行。 2、当当线程启动的调用了run()方法,那代码还是同步的,必须等待一个线程执行完之后再执行另外线程的run...
  • Thread类中run()和start()方法的区别如下: run()方法:在本线程内调用该Runnable对象的run()方法,可以重复次调用; start()方法:启动一个线程,调用该Runnable对象的run()方法,不能次启动一个线程; ...
  • 区别:调用start方法实现多线程,而调用run方法没有实现多线程 (run没有另起线程,而start才是真正意义的新开线程) start(): 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行...
  • 1.创建多线程的方法 1.继承Thread类,重写run方法,使用start方法创建一个线程 2.实现Runnable接口,重写run方法,通过new Thread(Runnable target).start创建一个线程 2.start()方法 通过调用start()方法来启动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 376,261
精华内容 150,504
关键字:

多线程的run和start的区别