執行緒sleep方法的面試題
thread類原始碼展示sleep方法:
問題:下面**中的t.sleep(3000)會讓自定義的t執行緒睡眠3秒鐘嗎?
如果不會,那麼是讓主線程睡眠3秒嗎?
為什莫呢?
class
mythread
extends
thread}}
public
class
sleeptest
catch
(interruptedexception e)
system.out.
println
("主線程我愛你");}}}
結果展示:
之後每隔3秒輸出:主線程我愛你:
結果分析:
sleep方法是靜態的方法,無論是執行緒的哪個物件呼叫,最終底層呼叫結果都會轉為thread.sleep()都是讓當前正在執行的執行緒睡眠3秒鐘,也就是說我們的靜態方法,都是由類來呼叫的,不依賴某個物件而存在,也就是說我們上述**都是在主線程main執行緒中:
for
(int i =
0; i <
4; i++
)catch
(interruptedexception e)
system.out.
println
("主線程我愛你");
}
我們啟動了分支執行緒後,主線程**會和分支執行緒中的**併發執行,但是主線程有thread.sleep(),所以分支執行緒run方法會先執行完,然後主線程每隔3秒,輸出一次"主線程我愛你「!!! 面試題 執行緒
今天公司新來的小夥伴問了我這樣乙個面試題 他不清楚為什麼最後輸出的是thread中的方法,而不是runnable中的方法,然後我看了下他從網上搜出的別人寫的答案,很多東西對於懂的人來說很容易就能看懂,但是對於剛剛踏入這一行業的人來說,他不明白。所以希望很多在這塊迷茫的小夥伴能夠更好的掌握這一點,那麼...
面試題 執行緒的幾種建立方法
建立執行緒的四種方式 繼承thread類,並複寫run方法,建立該類物件,呼叫start方法開啟執行緒。此方式沒有返回值。建立執行緒物件 thread t new thread 啟動執行緒 t.start 實現runnable介面,複寫run方法,建立thread類物件,將runnable子類物件傳...
多執行緒面試題
題目 主線程執行10次,子執行緒執行10次,此過程重複50次 package com.thread.test function 主線程執行10次,子執行緒執行10次,此過程重複50次 public class threadproblem start for int j 0 j 50 j class ...