首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

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

3.9K00

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的内存机制规定的。

25730

深入线程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() { // 如果线程不是"就绪状态

2.7K00

面试题:Thread的startrun的区别

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线程。 源码分析 知道了runstart的区别,我们来看看start方法源码 ?...start方法中调用了本地方法start0,native即是本地方法(也是底层方法)。怎么看start0方法,可以去访问openjdk源码(访问比较慢)。 ?...就是在thread_entry方法中调用run方法 总结 start方法中的基本流程 ? 小伙伴们看到这里,是不是感觉这个面试题很简单呢?

88310

Python run()函数start()函数的比较差别介绍

run() 方法并不启动一个新线程,就是在主线程中调用了一个普通函数而已。 start() 方法是启动一个子线程,线程名就是自己定义的name。...因此,如果你想启动多线程,就必须使用start()方法。 请看实例:(源代码) 1 使用run()方法启动线程,它打印的线程名是MainThread,也就是主线程。...= MyTryThread start() test end 3 两个子线程都用run()方法启动,但却是先运行t1.run(),运行完之后才按顺序运行t2.run(),两个线程都工作在主线程,没有启动新线程...=‘t2') t1.run() t2.run() print(“run() test end”) 运行结果: Start Test run() thread name = MainThread, thread...()函数start()函数的比较差别介绍就是小编分享给大家的全部内容了,希望能给大家一个参考。

1.9K40

多线程 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.3K10

为什么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 方法只能被调用一次。

59710

Run loopThread

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

51130

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

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

13930

「附数据结构资源」玩转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 // 如果线程不是

36620
领券