Java5以後線程狀態放到了Thread.State中,分別是:java
在操做系統中線程是最小的調度單元,進程中能夠建立多個線程,線程中有本身的棧,寄存器,本地存儲,會和進程內其餘線程共享文件描述符,虛擬地址。golang
目前jdk中調度的線程會一一映射到操做系統的內核線程上,jdk經過JNI調用本地代碼。併發
最近幾年golang的協程很火,相信過不了多久java也會出現這樣一款輕量級併發解決方案了。jvm
建立線程有Runable和繼承Thread兩種方式,其實底層是一種方式基於Runable的,好處是解決了Java類不支持多重繼承的限制,能夠重用代碼邏輯。spa
Jdk層面對於線程的調度,能夠採用yield讓線程讓出cpu,調用wait告訴持有monitor鎖的線程進入等待狀態。操作系統
當咱們啓動一個hello word時,能夠經過MXBean觀察啓動的線程,觀察他們的不一樣目的:線程