如果不适用shutdown ,使用 executor执行任务时,就不能退出,也就不能键入控制台命令?线程与控制台之间有什么关系?
另由 控制台 返回,想到 java 的main ( ) 函数由于void,不需要写return 语句, 而 C 语言 main ( ) 函数由于 为int ,需要使用return ()? java 为什么可以这样设置,是出于什么样的机制?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
Thread和Executor不可並論,Thread是屬於Java的基礎結構,代表的就是程式中實際的線程,其run方法就是線程執行過程。 Executor是在Thread上做了封裝,引入了執行緒池和執行緒復用的概念以提高運行效率和節約資源。 Executor控制線程持續運行,簡單的說就是Thread的run方法裡有一個無限循環while(true) {} ,所以Executor所持有的Thread會一直運作不會停止,需要使用shutdown方法去讓Executor 告知它下屬的Thread跳出循環以停止執行緒。當然,Thread並非沒有類似shutdown的方法,很多程式需要執行緒持續運行,都會帶有循環,這時候在繼承封裝Thread的時候,都需要自行實作執行緒退出的方法。 Thread和Executor不可并论,Thread是属于Java的基础结构,代表的就是程序中实际的线程,其run方法就是线程执行过程。Executor是在Thread上做了封装,引入了线程池和线程复用的概念以提高运行效率和节约资源。Executor控制着线程持续运行,简单的说就是Thread的run方法里有一个无限循环while(true) {},所以Executor所持有的Thread会一直运行不会停止,需要使用shutdown方法去让Executor告知它下属的Thread跳出循环以停止线程。当然,Thread并非没有类似shutdown的方法,很多程序需要线程持续运行,都会带有循环,这时候在继承封装Thread的时候,都需要自行实现线程退出的方法。
Thread
Executor
Java
run
while(true) {}
shutdown
关于Java的main返回void的问题我想并没有什么特别好解释的,C里的main比较古老,那时候的程序还需要依赖返回值来告诉使用者程序是否正常运行,而Java有健全的异常机制,程序也不直接基础控制台,所以即使要有返回值,也应该是Java Runtime来做,而不是Java
main
void
C
Java Runtime
Thread
和Executor
不可並論,Thread
是屬於Java
的基礎結構,代表的就是程式中實際的線程,其run
方法就是線程執行過程。Executor
是在Thread
上做了封裝,引入了執行緒池和執行緒復用的概念以提高運行效率和節約資源。Executor
控制線程持續運行,簡單的說就是Thread
的run
方法裡有一個無限循環while(true) {}
,所以Executor
所持有的Thread
會一直運作不會停止,需要使用shutdown
方法去讓Executor
告知它下屬的Thread
跳出循環以停止執行緒。當然,Thread
並非沒有類似shutdown
的方法,很多程式需要執行緒持續運行,都會帶有循環,這時候在繼承封裝Thread
的時候,都需要自行實作執行緒退出的方法。Thread
和Executor
不可并论,Thread
是属于Java
的基础结构,代表的就是程序中实际的线程,其run
方法就是线程执行过程。Executor
是在Thread
上做了封装,引入了线程池和线程复用的概念以提高运行效率和节约资源。Executor
控制着线程持续运行,简单的说就是Thread
的run
方法里有一个无限循环while(true) {}
,所以Executor
所持有的Thread
会一直运行不会停止,需要使用shutdown
方法去让Executor
告知它下属的Thread
跳出循环以停止线程。当然,Thread
并非没有类似shutdown
的方法,很多程序需要线程持续运行,都会带有循环,这时候在继承封装Thread
的时候,都需要自行实现线程退出的方法。关于
關於Java
的main
返回void
的问题我想并没有什么特别好解释的,C
里的main
比较古老,那时候的程序还需要依赖返回值来告诉使用者程序是否正常运行,而Java
有健全的异常机制,程序也不直接基础控制台,所以即使要有返回值,也应该是Java Runtime
来做,而不是Java
Java
的main
返回void
的問題我想並沒有什麼特別好解釋的,C
裡的main
比較古老,那時候的程式也需要依賴回傳值來告訴使用者程式是否正常運行,而Java
有健全的異常機制,程式也不直接基礎控制台,所以即使要有回傳值,也應該是Java Runtime
來做,而不是Java
程式來做。 🎜