簡體   English   中英

這兩個Java之間的區別(創建對象)

[英]Difference between these two Java (Creating objects)

我正在學習Java中的線程,並且遇到了以下兩個問題:

類運行器實現可運行,並傳遞到Thread對象的構造函數中

  1. Runner runner = new Runner();
    Thread thread1 = new Thread(runner);

  2. Thread thread1 = new Thread(new Runner());

我從未遇到過第二種選擇。 如果有人可以幫助新手Java程序員並告訴我第二個變體的用途是什么,以及在構造函數內部創建類的實例時實際調用了什么,那將是很好的選擇?

謝謝。

目前除了第一個之后,你有一個變量沒有區別runner是指Runner ,並在第二個之后,你不知道。 但是他們兩個都創建了一個新的Runner對象,並使用該新對象構造了一個新的Thread

這僅僅是將任何表達式用作對象的能力,無論是變量還是構造函數。

打個比方,第一個就像“種一個蘋果然后放在桌子上。然后,用那個蘋果在桌子上做餡餅”

第二個類似於“種一個蘋果,然后做成一個餡餅”。 它只是避免使用中間變量來保存蘋果(在代碼中為可運行的)

如果您需要對蘋果做些其他事情而不是傳遞它,則需要(在大多數情況下)存儲到中間變量。 這里的類比是“種蘋果,放在桌子上。去皮。用蘋果做一個新餡餅”

我先給外賣

兩者相同, JIT會將第一個版本優化為第二個版本

盡管有一個主要區別。 如果你想調用的一些功能, runner則可以在第一個版本做到這一點,但你不能在第二個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM