創(chuàng)建線程的三種方式:
1.繼承Thread類來(lái)實(shí)現(xiàn)線程
run()為線程類的核心方法,相當(dāng)于主線程的main方法,是每一個(gè)線程的入口
一個(gè)線程只能調(diào)用1次start方法
run()方法時(shí)由jvm創(chuàng)建完本地操作系統(tǒng)級(jí)線程后回調(diào)的方法,不能手動(dòng)調(diào)用(否則就是普通方法)
2.覆寫Runnable接口來(lái)實(shí)現(xiàn)線程
Thread類其實(shí)也是通過(guò)覆寫Runnable接口來(lái)實(shí)現(xiàn)的
比起Thread類來(lái)實(shí)現(xiàn)線程,更推薦使用Runnable接口來(lái)實(shí)現(xiàn)線程,這樣可以覆寫Runnable接口實(shí)現(xiàn)線程可以避免單繼承局限
3.覆寫Callable接口來(lái)實(shí)現(xiàn)線程
通過(guò)call()方法來(lái)執(zhí)行線程方法
Runnable和Callable接口的主要區(qū)別就是:
callable接口有返回值,而Runnable接口沒(méi)有返回值,callable接口的call方法可以拋出異常,runnable接口的run方法的異常只能內(nèi)部處理