介紹:html
java的線程是經過java.lang.Thread類來實現的。VM啓動時會有一個由主方法所定義的線程。能夠經過建立Thread的實例來建立新的線程。每一個線程都是經過某個特定Thread對象所對應的方法run()來完成其操做的,方法run()稱爲線程體。經過調用Thread類的start()方法來啓動一個線程。 java
實現並啓動線程有兩種方法
一、寫一個類繼承自Thread類,重寫run方法。用start方法啓動線程
二、寫一個類實現Runnable接口,實現run方法。用new Thread(Runnable target).start()方法來啓動
多線程原理:至關於玩遊戲機,只有一個遊戲機(cpu),但是有不少人要玩,因而,start是排隊!等CPU選中你就是輪到你,你就run(),當CPU的運行的時間片執行完,這個線程就繼續排隊,等待下一次的run()。
調用start()後,線程會被放到等待隊列,等待CPU調度,並不必定要立刻開始執行,只是將這個線程置於可動行狀態。而後經過JVM,線程Thread會調用run()方法,執行本線程的線程體。先調用start後調用run,這麼麻煩,爲了避免直接調用run?就是爲了實現多線程的優勢,沒這個start不行。
面試
記住:多線程就是分時利用CPU,宏觀上讓全部線程一塊兒執行 ,也叫併發多線程
關於線程的5個狀態參考:Java線程的5種狀態及切換(透徹講解)-京東面試併發
參考:Thread的run()與start()的區別jvm