執行緒sleep方法的面試題

2021-10-19 11:21:23 字數 916 閱讀 8531

執行緒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 ...