/**
* <p>Title: 線程間合作</p>
* <p>Description: 本實例使用二個線程共同合作繪制一個實體三角。</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Filename: mainThread.java</p>
* @version 1.0
*/
public class mainThread{
public static int flag = 0;
int count = 10;
/**
*<br>方法說明:主方法
*<br>輸入參數:
*<br>返回類型:
*/
public static void main(String[] arg){
new mainThread();
}
/**
*<br>方法說明:構造器,啟動兩個子線程。
*<br>輸入參數:
*<br>返回類型:
*/
mainThread(){
thread1 t1 = new mainThread.thread1(this.count);
thread2 t2 = new mainThread.thread2(this.count);
//啟動兩線程
t1.start();
t2.start();
//讓線程一首先工作。
flag = 1;
}
/**
*<br>類說明:內部類,繼承了Thread,
*<br>類描述:實現了在輸出每行前面的空格。
*/
class thread1 extends Thread{
int count1 = 0;
thread1(int i){
count1 = i;
}
public void run(){
while(true){
if(count1<=0) break;
if(mainThread.flag==1){
for(int i=0;i<count1;i++){
System.out.print(" ");
}
count1--;
mainThread.flag=2;
}
}
}
}
/**
*<br>類說明:內部類,繼承了Thread,
*<br>類描述:實現了在輸出每行第“*”號。並提供換行。
*/
class thread2 extends Thread{
int count2 = 0;
thread2(int i){
count2 = i;
}
public void run(){
int count = 0;
while(true){
if(count>=count2) break;
if(mainThread.flag==2){
for(int i=0;i<(count*2+1);i++){
System.out.print("*");
}
System.out.print("\n");
count++;
mainThread.flag=1;
}
}
}
}
}