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) 人氣()