start、run、join

首先得了解什么是主线程,当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread)。主线程的重要性体现在两方面:
1. 它是产生其他子线程的线程;
2. 通常它必须最后完成执行,因为它执行各种关闭动作。

run 只是运行此方法,依旧处于主线程内,不会开启新线程

start 开启一个新线程,并放置于就绪队列

join 开启一个新线程并加入到主线程。

备注:主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程将于子线程结束之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。

原文地址:https://www.cnblogs.com/yanze/p/9875994.html

时间: 2024-10-05 05:04:35

start、run、join的相关文章

jemalloc存储块(region、run、chunk)

jemalloc中按存储单元的块大小分,有region.run.chunk三种存储块. 最小的单元是region,它的大小是8字节~14KB,1个或多个相同大小的region组成一个run. run的大小必须是页(4kB)的整数倍,相同大小region对应的run的大小总是相同的,多个run组成一个chunk. chunk的大小固定是2M(或4M,可配置). region size run size number of region in run 8 4K 512 16 4k 256 32 4k

017、RUN、CMD、ENTRYPOINT (2019-01-08 周二)

参考https://www.cnblogs.com/CloudMan6/p/6875834.html RUN CMD ENTRYPOINT 这三个Dockerfile指令看上去很类似,很容易混淆. 简单的说: RUN 执行命令并创建新的镜像层,经常用于安装软件 CMD 设置容器启动后默认执行的命令机器参数,但CMD能够被 docker run 后面跟的命令行参数替换 ENTRYPOINT 配置容器启动时运行的命令 shell 和exex 格式 有shell和exec两种方式可以指定 RUN CM

Coding theano under remote ubuntu server from local Mac (在本地mac机器上,写、跑、调试、看-远程ubuntu上的theano代码)

本人是奇葩,最近鼓捣了一套在mac上coding远程ubuntu上的theano代码的东东,记之以期造福后人. Overview: 下图是我的编程环境和网络环境 我期望能在本地mac机器上对远程的ubuntu theano server进行write.run.debug.view matplotlib图片. mac设置(参考这里) 考虑到在Mac本地调试一部分代码,我把mac也设置好了科学计算环境. 1.1 python mac安装xcode后会自带很多东西,python就是其中一个.但mac提

Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别

Java线程中sleep().wait()和notify()和notifyAll().suspend和resume().yield().join().interrupt()的用法和区别 从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列).并且在某一时刻cpu只为ready queue中位于队列头部的线程服务. 但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield. 或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sleep. 

java并发系列(二)-----线程之间的协作(wait、notify、join、CountDownLatch、CyclicBarrier)

在java中,线程之间的切换是由操作系统说了算的,操作系统会给每个线程分配一个时间片,在时间片到期之后,线程让出cpu资源,由其他线程一起抢夺,那么如果开发想自己去在一定程度上(因为没办法100%控制它)让线程之间互相协作.通信,有哪些方式呢? wait.notify.notifyAll 1.void wait( ) 导致当前的线程等待,直到其他线程调用此对象的notify( ) 方法或 notifyAll( ) 方法 2.void wait(long timeout) 导致当前的线程等待,直到

线程的通信与协作:sleep、wait、notify、yield、join关系与区别

一.sleep.join.yield.wait.notify.notifyAll 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方法要捕捉异常. 例 如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有 Sleep()方法,只有高优先级的线程执行完毕后,低优先级的

走向面试之经典的数据库基础:二、SQL进阶之case、子查询、分页、join与视图

一.CASE的两种用法 1.1 等值判断->相当于switch case (1)具体用法模板: CASE expression WHEN value1 THEN returnvalue1 WHEN value2 THEN returnvalue2 WHEN value3 THEN returnvalue3  ELSE defaultreturnvalue END (2)具体使用示例: 假设我们有一个论坛网站,其中有一张User表{ UId,Name,Level },Level是一个int类型,代

Linq表连接大全(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN、CROSS JOIN)

转载http://www.cnblogs.com/shenqiboy/p/3260105.html 我们知道在SQL中一共有五种JOIN操作:INNER JOIN.LEFT OUTER JOIN.RIGHT OUTER JOIN.FULL OUTER JOIN.CROSS JOIN        内连接.Sql: SELECT [t0].[GroupName], [t1].[UserName] FROM [Group] AS [t0] INNER JOIN [User] AS [t1] ON (

EF基本操作增、删、查、改、分页,join……等

一.批量添加数据 1 static void Main(string[] args) 2 { 3 add(); 4 add2(); 5 Console.ReadKey(); 6 } 7 8 static void add() 9 { 10 DemoDbEntities db = new DemoDbEntities(); 11 Stopwatch st = new Stopwatch(); 12 st.Start(); 13 for (int i = 0; i < 1000; i++) 14 {