LifeCycle
Java ์ธ์ด์์ ๋ฉํฐ์ค๋ ๋ฉ์ Thread ์ ํต์ฌ ๊ฐ๋ ์ ์ํด ๊ตฌ๋๋ฉ๋๋ค . ์๋ช ์ฃผ๊ธฐ ๋์ ์ค๋ ๋๋ ๋ค์ํ ์ํ๋ฅผ ๊ฑฐ์นฉ๋๋ค.
์ํ
STATUS
DESC
NEW
์์ง ์คํ์ ์์ํ์ง ์์ ์๋ก ์์ฑ๋ ์ค๋ ๋
RUNNABLE
์คํ ์ค์ด๊ฑฐ๋ ์คํํ ์ค๋น๊ฐ ๋์์ง๋ง ๋ฆฌ์์ค ํ ๋น์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค
BLOCKED
๋๊ธฐํ๋ ๋ธ๋ก/๋ฐฉ๋ฒ์ ๋ค์ด๊ฐ๊ฑฐ๋ ๋ค์ ๋ค์ด๊ฐ๊ธฐ ์ํด ๋ชจ๋ํฐ ์ ๊ธ์ ํ๋ํ๊ธฐ ์ํด ๋๊ธฐ ์ค
WAITING
์๊ฐ ์ ํ ์์ด ๋ค๋ฅธ ์ค๋ ๋๊ฐ ํน์ ์์ ์ ์ํํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค
TIMED_WAITING
์ง์ ๋ ๊ธฐ๊ฐ ๋์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ํน์ ์์ ์ ์ํํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค
TERMINATED
์คํ์ ์๋ฃํ์ต๋๋ค
How do code?
NEW , RUNNABLE
val runnable: Runnable = Runnable {
println("Thread is running")
}
val t = Thread(runnable)
println(t.state) // NEW
t.start()
println(t.state) // RUNNABLEBLOCKED
class BlockRunnable: Runnable {
override fun run() {
commonResource();
TODO("Not yet implemented")
}
@Synchronized
fun commonResource() {
while(true) { }
}
}
fun main(args: Array<String>) {
val thread1 = Thread(BlockRunnable())
val thread2 = Thread(BlockRunnable())
thread1.start();
thread2.start();
Thread.sleep(1000);
System.out.println(thread2.getState()); // BLOCKED
}WAITING
fun inner() : Runnable= Runnable { try {
Thread.sleep(1000)
} catch (e: InterruptedException) {
Thread.currentThread().interrupt()
e.printStackTrace()
}
println(thread.state) // WAITING
}
fun waiting() = Runnable {
val inner = Thread(inner())
inner.start()
try {
inner.join()
} catch (e: InterruptedException) {
Thread.currentThread().interrupt()
e.printStackTrace()
}
}
val thread:Thread = Thread(waiting())
fun main() {
thread.start();
}TIME WAITING
fun timeWaiting() = Runnable {
Thread.sleep(5000)
}
val thread:Thread = Thread(timeWaiting())
fun main() {
thread.start();
Thread.sleep(1000)
println(thread.state) // TIME WAIT
}TERMINATE
fun timeWaiting() = Runnable {
println("TERMINATE")
}
val thread:Thread = Thread(timeWaiting())
fun main() {
thread.start();
Thread.sleep(1000)
println(thread.state)
}Last updated