首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试题:Thread的start和run的区别

t.run(); //调用run方法 //调用执行 current main thread is main task run..... task thread is : main 换成调用方法t.start...(),执行 current main thread is main task run..... task thread is : Thread-0 小伙伴们是否已经知道他们的区别了 1、run方法就是个普通的方法...2、start方法被main线程调用,但执行task()方法并不是main线程。 源码分析 知道了run和start的区别,我们来看看start方法源码 ?...start方法中调用了本地方法start0,native即是本地方法(也是底层方法)。怎么看start0方法,可以去访问openjdk源码(访问比较慢)。 ?...就是在thread_entry方法中调用run方法 总结 start方法中的基本流程 ? 小伙伴们看到这里,是不是感觉这个面试题很简单呢?

94010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    多线程 start 和 run 方法到底有什么区别?

    今天,栈长会详细介绍 Java 中的多线程 start() 和 run() 两个方法,Java 老司机请跳过,新手或者对这两个不是很理解的可以继续往下看。...() 方法,所以基于 Thread 和 Runnable 创建多线程都需要实现 run() 方法,是多线程真正运行的主方法。...- start); start = System.currentTimeMillis(); thread.run(); System.out.println(System.currentTimeMillis...() - start); } 程序输出: 0 Java技术栈 3000 Java技术栈 从程序输出结果可以看出,启动 start 方法前后只用了 0 毫秒,而启动 run 方法则阻塞了 3000 毫秒等程序执行完再继续执行...看完这篇,你应该对 start 和 run 方法有了一个大概的掌握吧,再也不怕面试官问你这两个的区别了吧!

    1.4K10

    「附数据结构资源」玩转java并发(六):深入线程Thread类的start()方法和run()方法

    在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。   第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。   第二是就绪状态。...三、run( )方法 1、run方法又是一个什么样的方法?run方法与start方法有什么关联?...run()方法当作普通方法的方式调用 run( )其实是一个普通方法,只不过当线程调用了start( )方法后,一旦线程被CPU调度,处于运行状态,那么线程才会去调用这个run()方法; 2、run()...总结: 通过实例1和实例和我们可以知道start方法是用于启动线程的,可以实现并发,而run方法只是一个普通方法,是不能实现并发的,只是在并发执行的时候会调用。...四、start()方法和run()方法源码解析(基于JDK1.7.0_40) 1 public synchronized void start() { 2 // 如果线程不是

    40520

    Thread类的run()和start()方法的区别

    1、线程的start()方法   start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程...然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程。...; thread.start(); } } } 控制台输出: [线程1]正在启动! [线程2]正在启动!...Thread-1---1 Thread-1---2 Thread-1---3 总结   调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。...这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。

    34530

    Android高级:内部类的理解,多态,run和start,wait和seelp,线程安全,堆和栈,synchronized 和volatile ,AsyncTask,Binder的机,view的原理

    插入和删除速度快,访问速度慢。 Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。...开启线程的三种方式 java有三种创建线程的方式,分别是继承Thread类、实现Runable接口和使用线程池 run()和start()方法区别 这个问题经常被问到,但还是能从此区分出面试者对Java...start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。...当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。...3、适当的使用软引用和弱引用。 加密算法(base64、MD5、对称加密和非对称加密)和使用场景。 什么是Rsa加密? RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥。

    10600

    深入线程Thread类的start()方法和run()方法

    在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。   第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。   第二是就绪状态。...三、run( )方法 1、run方法又是一个什么样的方法?run方法与start方法有什么关联?...run()方法当作普通方法的方式调用 run( )其实是一个普通方法,只不过当线程调用了start( )方法后,一旦线程被CPU调度,处于运行状态,那么线程才会去调用这个run()方法; 2、run()...总结: 通过实例1和实例和我们可以知道start方法是用于启动线程的,可以实现并发,而run方法只是一个普通方法,是不能实现并发的,只是在并发执行的时候会调用。...四、start()方法和run()方法源码解析(基于JDK1.7.0_40) public synchronized void start() { // 如果线程不是"就绪状态

    3.1K00

    thread类中start()和run()方法的区别

    1,start()方法来启动线程,真正实现了多线程运行,这时无需等待。...run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。...然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程。...3,调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。...这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。

    4.1K00

    Run loop和Thread

    我认为run loop就是较好的利用了这个事实的一种机制。一个run loop就是跑在单个线程上进行事件处理的循环。你在run loop上注册输入源,并指定当这些源有输入时应该执行的代码。...这就是说你不会遇到多线程的问题,这也是run loop非常有用的原因。 和线程的关系? 每个线程,包括应用的主线程都有一个相关联的run loop对象,在应用中你不需要显式的创建run loop对象。...在Carbon和Cocoa应用中,主线程会自动设置并运行它的run loop,这个过程也是应用启动过程的一部分。...不适用run loop的情况 那什么时候不适合使用run loop呢?...然而,大部分情况下,我们的代码处理屏幕、socket或者计时器事件都非常快,这时使用main run loop处理起来更简单,也更安全。 编译自Run-loops vs.

    59030

    Java并发编程:为什么我们调用 start()方法时会执行 run()方法

    在Java并发编程中,调用start()方法时会启动一个新的线程,并且该线程会执行run()方法。...二、线程状态 在调用start()方法后,线程并不能立即开始执行run()方法,而是处于就绪状态(Runnable),等待线程调度程序为其分配CPU时间片,并使其进入运行状态(Running)。...正因为Java中调用start()方法时只是将线程设置为就绪状态,所以多个线程可以并发地进行切换和执行。...因此,在Java中调用start()方法时会执行run()方法,是由于Java语言本身的设计和多线程的实现方式而决定的。...这种设计可以让我们更加方便地进行多线程编程,并允许多个线程并发地执行,提高了程序的执行效率和性能。

    25330

    Run():

    Run(),使用Run调用中间件的时候,会直接返回一个响应,所以后续的中间件将不会被执行了。...Run():  这是一个使用Run方法调用的中间件,Run方法会终止整个中间件管道,它应该返回某种类型的响应。 Use():  Use看起来和Run差不多,但是多了一个next参数。...在本例中,我们下面还使用了Run方法注册了另一个中间件。因为中间件会按照它们注册的顺序进行调用,所以在第一个Use方法里执行next.Invoke()的时候,就会执行下面Run所调用的中间件。...Startup.cs 之前我们见过,ASP.NET Core里面的Startup.cs里面有两个方法,分别是ConfigureServices()和Configure(),它们的职责就是注册应用的一些服务和构建中间件请求管道...这个请求委托就会触发和实例化选中的Controller和Action方法,并产生响应。最后响应再从中间件管道原路返回。

    1.7K31

    为什么start方法不能重复调用?而run方法却可以?

    初学线程时,总是将 run 方法和 start 方法搞混,虽然二者是完全不同的两个方法,但刚开始使用时很难分清,原因就是因为初次使用时效果貌似是一样的,如下代码所示: public static void...区别1 run 方法和 start 方法的第一个区别是:调用 start 方法是真正开启一个线程来执行任务,而调用 run 方法相当于执行普通方法 run,并不会开启新线程,如下图所示: 区别2...run 方法和 start 方法的第二个区别是:run 方法也叫做线程体,它里面包含了具体要执行的业务代码,当调用 run 方法时,会立即执行 run 方法中的代码(如果当前线程时间片未用完);而调用...总结 run 方法和 start 方法的主要区别如下: 方法性质不同:run 是一个普通方法,而 start 是开启新线程的方法。...执行速度不同:调用 run 方法会立即执行任务,调用 start 方法是将线程的状态改为就绪状态,不会立即执行。 调用次数不同:run 方法可以被重复调用,而 start 方法只能被调用一次。

    79210

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券