package pkg9.pkg14;

class MyThread implements Runnable{
    public void run(){
        int t = 0;
        int i = 1;
        while(true){
            System.out.println("i =" + i);
            i++;
        }
    }
}
public class Main {

    public static void main(String[] args) {
        MyThread mt = new MyThread();
        Thread t = new Thread(mt,"Thread - A");
        t.setDaemon(true);   //設定在背景執行
        t.start();
        
    }
}
 

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()


package pkg9.pkg13;

class MyThread implements Runnable{
    public void run(){
        System.out.println("1.進入run方法");
        try{
            Thread.sleep(10000);            //休眠10秒
            System.out.println("2.完成休眠");
        }catch(Exception e){
            System.out.println("3.休眠被終止");
            return;
        }
    }
}
public class Main {

    public static void main(String[] args) {
        MyThread mt  = new MyThread();
        Thread t = new Thread(mt,"Thread - A");
        t.start();
        
        try{
            Thread.sleep(2000);  //休息2秒再繼續中斷
        }catch(Exception e){
        }
        t.interrupt();          //中斷執行緒執行
    }
}
 


run:
1.進入run方法
3.休眠被終止
BUILD SUCCESSFUL (total time: 2 seconds)
 

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()


package pkg9.pkg8;

import com.sun.istack.internal.logging.Logger;
import java.util.logging.Level;

class MyThread implements Runnable{
    public void run(){
        for(int i = 0 ; i < 3 ; i++){
            System.out.println(Thread.currentThread().getName() + "i = " + i);
        }
    }
}
public class Main {

   
    public static void main(String[] args) {
        MyThread my = new MyThread();       //產生實體物件
        Thread t = new Thread(my,"執行緒-C");       //產生實體Thread物件
        
        t.start();          //執行執行緒
        
        for(int i = 0 ; i <50 ; i++){               //迴圈50次 
            if(i > 10){                                     //判斷變數內容
                try{
                    t.join();                                   //執行緒t進行強制執行
                }catch(Exception e){}               //需要進行例外處理
            }
            System.out.println("i = " + i);
        }
    }
}
 


run:
執行緒-Ci = 0
執行緒-Ci = 1
執行緒-Ci = 2
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
i = 11
i = 12
i = 13
i = 14
i = 15
i = 16
i = 17
i = 18
i = 19
i = 20
i = 21
i = 22
i = 23
i = 24
i = 25
i = 26
i = 27
i = 28
i = 29
i = 30
i = 31
i = 32
i = 33
i = 34
i = 35
i = 36
i = 37
i = 38
i = 39
i = 40
i = 41
i = 42
i = 43
i = 44
i = 45
i = 46
i = 47
i = 48
i = 49
BUILD SUCCESSFUL (total time: 0 seconds)
 

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()

package pkg9.pkg8;

class MyThread implements Runnable{
    public void run(){
        for(int i = 0 ; i < 3 ; i++){
            System.out.println(Thread.currentThread().getName() + "i = " + i);
        }
    }
}


public class Main {

   
    public static void main(String[] args) {
        MyThread my = new MyThread();
        new Thread(my).start();
        new Thread(my,"執行緒-A").start();
        new Thread(my,"執行緒-B").start();
        new Thread(my).start();       //系統自動設定執行緒名稱
        new Thread(my).start();      //系統自動設定執行緒名稱
        
        Thread t = new Thread(my,"執行緒-C");
        t.start();
        
        System.out.println("判斷執行緒-C是否有啟動中 -- >" + t.isAlive());     //判斷是否啟動執行緒
    }
}


執行緒-Ai = 0
執行緒-Ai = 1
執行緒-Ai = 2
Thread-1i = 0
Thread-1i = 1
Thread-1i = 2
執行緒-Bi = 0
執行緒-Bi = 1
執行緒-Bi = 2
Thread-0i = 0
Thread-0i = 1
Thread-0i = 2
執行緒-Ci = 0
執行緒-Ci = 1
執行緒-Ci = 2
判斷執行緒-C是否有啟動中 -- >true
Thread-2i = 0
Thread-2i = 1
Thread-2i = 2


 

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()

package pkg9.pkg8;

class MyThread implements Runnable{
    public void run(){
        for(int i = 0 ; i < 3 ; i++){
            System.out.println(Thread.currentThread().getName() + "i = " + i);
        }
    }
}


public class Main {

   
    public static void main(String[] args) {
        MyThread my = new MyThread();
        new Thread(my).start();
        new Thread(my,"執行緒-A").start();
        new Thread(my,"執行緒-B").start();
        new Thread(my).start();       //系統自動設定執行緒名稱
        new Thread(my).start();      //系統自動設定執行緒名稱
        
        Thread t = new Thread(my,"執行緒-C");
        t.start();
        
        System.out.println("判斷執行緒-C是否有啟動中 -- >" + t.isAlive());     //判斷是否啟動執行緒
    }
}


執行緒-Ai = 0
執行緒-Ai = 1
執行緒-Ai = 2
Thread-1i = 0
Thread-1i = 1
Thread-1i = 2
執行緒-Bi = 0
執行緒-Bi = 1
執行緒-Bi = 2
Thread-0i = 0
Thread-0i = 1
Thread-0i = 2
執行緒-Ci = 0
執行緒-Ci = 1
執行緒-Ci = 2
判斷執行緒-C是否有啟動中 -- >true
Thread-2i = 0
Thread-2i = 1
Thread-2i = 2


Java是多執行緒的程式設計語言,每當使用Java指令執行一個類別時,實際上都會啟動一個JVM,每一個JVM實際上就是在作業系統中啟動了一個處理程序,Java本身具備了垃圾的收集機制。所以在Java執行時至少會啟動兩個執行緒,一個是main執行緒,另外一個是垃圾收集執行緒

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()

package pkg7.pkg15;

//自訂例外的類別
class MyException extends Exception{
    public MyException(String msg){
        super(msg);
    }
}

public class Main {
   
    public static void main(String[] args) {
        int a = 10;
        try{
            if(a == 10){
                throw new MyException("自訂的例外。");
            }
        }catch(Exception e){
            System.out.println(e);
        }
    }
}


pkg7.pkg15.MyException: 自訂的例外。

mingyilai 發表在 痞客邦 留言(0) 人氣()

package pkg7.pkg1;

public class Main {

    public static void main(String[] args) {
        System.out.println("計算開始");
        try {
            int i = Integer.parseInt(args[0]);
            int j = Integer.parseInt(args[1]);
            int temp = 0;
            temp = i / j;
            System.out.println("兩個數字相除結果:" + temp);
            //補捉錯誤  
        } catch (ArithmeticException e) {
            System.out.println("錯誤訊息為:" + e);
            System.out.println("除數不可為0 ");
        } catch (NumberFormatException e) {
            System.out.println("數字轉換例外了**********");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("陣列超出的例外了************");
        } finally {
            System.out.println("無論是否出現例外,一定會執行這一段!");
        }
        System.out.println("計算結束");
    }
}

mingyilai 發表在 痞客邦 留言(0) 人氣()


package pkg7.pkg1;

public class Main {
    public static void main(String[] args) {
        System.out.println("計算開始");
        int i = 10;
        int j = 0 ;
        int temp = 0;
        //補捉錯誤
        try{
            //本來要執行的區段放這裡
            temp = i / j;
        }catch(ArithmeticException e){
            System.out.println("錯誤訊息為:" + e);
            System.out.println("除數不可為0 ");
        }
        
        System.out.println("兩個數字相除結果:" + temp);
        System.out.println("計算結束");
    }
}


計算開始
錯誤訊息為:java.lang.ArithmeticException: / by zero
除數不可為0 
兩個數字相除結果:0
計算結束

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()

/*
內部類別的擴充
 */
package pkg6.pkg42;

//在一個抽象類別中
//宣告一個介面
abstract class A{
    public abstract void printA();
    //宣告一個內部介面
    interface B{
        public void printB();
    }
    interface C{
        public void printC();
    }
}
//實現的類別
class X extends A {
    public void printA(){
        System.out.println("Hello --> A");
    }
    class Y implements B{
        public void printB(){
                System.out.println("Hello --> B");
        }
    }
    class Z implements C{
        public void printC(){
                System.out.println("Hello --> C");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        //建立物件
        A.B b = new X().new Y();
        b.printB();
        
        A.C c = new X().new Z();
        c.printC();
    }
}


執行結果:

Hello --> B
Hello --> C

mingyilai 發表在 痞客邦 留言(0) 人氣()


package pkg6.pkg40;

//定義Network的介面
interface Network{
    public void browse();  //瀏覽的方法
}

class Real implements Network{
    public void browse(){
        System.out.println("上網瀏覽資訊");
    }
}
//代理的設計
class Proxy implements Network{
    private Network network;
    
    public Proxy(Network network){
        this.network = network;
    }
    public void check(){
        System.out.println("檢查使用者是否合法");
    }
    public void browse(){
        this.check();
        this.network.browse();
    }
}
public class Main {

   
    public static void main(String[] args) {
        
        Network net = null;
        //透過 Proxy代理的方式上網
        //net = new Proxy(new Real());   //向上轉型 
        //net.browse();
        
        //直接連上網
        net = new Real();
        net.browse();
    }
    
}


執行結果:

檢查使用者是否合法
上網瀏覽資訊

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()