標籤:構造 關係 class 時間 練習 多個 jvm 一個 out
什麼是進程?
例如:
這些每個都是一個進程,每個進程都有好多功能,這些功能同時運行走的就是線程,多線程
一個進程會有多個線程或者一個線程,是一對多的關係
進程:一個程式進入記憶體就可以叫做進程
線程:線程是進程的一個執行單元(功能),可以多個線程一起執行
程式運行原理
java是搶佔式調度,就是cpu會隨機分配時間運行哪個線程時間長一點,執行的多一些。cpu會高速的在每個線程之間來回切換,但是某個時刻只能執行一個線程,
多線程並不能提高程式的運行速度,但是可以提高程式的運行效率,讓cpu的使用率更高
分時調度:cpu平均分配時間,每個線程的時間是一樣的
主線程
就是我們常用的main()方法,當JVM啟動後,必然有一個方法從mian方法開始,到結束。才能執行mian下面的別的方法,依次執行。
Treah類
構造方法
常用方法
寫一個新的類,然後繼承Thread類,聲明這是一個新的線程,將要執行的程式寫在新的類裡面,方法名run,在mian方法裡用start調用
1 package com.oracle.Demo02; 2 3 public class Demo1 extends Thread { 4 //JVM去找OS開了2條路徑 5 //對於CPU來說就有了2條路徑,這2條路徑都會被CPU執行,CPU有自己選擇的權利,所以就有了隨機性, 6 //也可以理解為2個線程在搶奪CPU的資源(時間) 7 public void run(){ 8 for(int i=0;i<100;i++){ 9 System.out.println("這是建立的線程"+i);10 }11 }12 }
1 package com.oracle.Demo02; 2 3 public class test { 4 5 public static void main(String[] args) { 6 Demo1 de = new Demo1(); 7 //開啟線程。start方法會在後台調用run方法 8 de.start(); 9 for(int i=0;i<100;i++){10 System.out.println("這是主線程"+i);11 }
練習:
給我建立三個線程,一個方法是列印1000以內的水仙花數,
一個方法是列印1000以內的所有偶數,一個方法是迴圈列印1000個數
1 package com.oracle.Demo02; 2 3 public class Demo02 extends Thread { 4 public void run(){ 5 for(int i=1;i<=1000;i++){ 6 int a = i%10; 7 int b = (i/10)%10; 8 int c = i/100%10; 9 if((a*a*a+b*b*b+c*c*c)==i){10 System.out.println("水仙花數"+i);11 12 }13 }14 }15 }
1 package com.oracle.Demo02; 2 3 public class Demo03 extends Thread{ 4 public void run(){ 5 for(int i=1;i<=100;i++){ 6 if(i%2==0){ 7 System.out.println("偶數"+i); 8 } 9 }10 }11 }
package com.oracle.Demo02;public class test { public static void main(String[] args) { Demo02 de = new Demo02(); de.start(); 建立第一個線程 Demo03 dee = new Demo03(); dee.start(); 建立第二個線程 for(int i =0;i<=1000;i++){ 主線程 System.out.println(i); } }}
java 初學多線程