什麼是進程 進程是一個可執行的應用程式,任何進程都有一個主線程作為入口,是線程的集合 什麼是多線程 多線程可以提高效率,我們在電腦操作的時候,開多個視窗,並不是多線程併發,是cpu在切換,只不過速度很快,我們感覺不到,多線程是在同一個時刻同時進行 為什麼要使用多線程? 假設你有100桶水,你一個小時 ...
什麼是進程
進程是一個可執行的應用程式,任何進程都有一個主線程作為入口,是線程的集合
什麼是多線程
多線程可以提高效率,我們在電腦操作的時候,開多個視窗,並不是多線程併發,是cpu在切換,只不過速度很快,我們感覺不到,多線程是在同一個時刻同時進行
為什麼要使用多線程?
假設你有100桶水,你一個小時能打20桶,現在我們需要你一個小時內都把這些誰打完?怎麼辦?這時候需要多叫幾個人一起打水
創建多線程的幾種方式
1.繼承thread類,實現run方法
2.匿名內部類
3.實現runable介面
4.callable
5.使用線程池創建
當我們啟動多線程的時候,代碼不是順序執行,而是交替執行(非同步,倆個線程互不印象),單線程是從上往下執行(同步)
繼承thread
class ThreadTest extends Thread{ @Override public void run() { for (int i=0;i<30;i++){ System.out.println("run:"+i); } } } public class ThreadDemo { public static void main(String[] args) { ThreadTest t1 = new ThreadTest(); t1.start(); for (int i = 0; i <30 ; i++) { System.out.println("main:"+i); } } }thead
實現runable介面
這方式比繼承介面的方式要好用,因為java中是單繼承,多實現的方式,你如果是繼承了thread類就不能在繼承別的類了
class ThreadTest02 implements Runnable{ @Override public void run() { for (int i=0;i<30;i++){ System.out.println("runable:"+i); } } } public class ThreadDemo02 { public static void main(String[] args) { new Thread(new ThreadTest02()).start(); for (int i = 0; i <30 ; i++) { System.out.println("main:"+i); } } }View Code
匿名內部類的方式創建
Thread t1 = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i <10 ; i++) { System.out.println("nei bu lei "+ i); } } }); t1.start(); }View Code