用Java的Thread、Runnable、Timer三種方法實現每隔一毫秒列印Hello,同時計算從1加到10000,算完後輸出結果並停止列印Hello。
技術標籤:java
用Java的Thread、Runnable、Timer三種方法實現每隔一毫秒列印Hello,同時計算從1加到10000,算完後輸出結果並停止列印Hello。
一、Thread實現
//列印Hello
package thread;
public class PrintHello extends Thread {
public static boolean flag=true;//標誌位:根據標誌位判斷是否要執行列印
private String str;
public PrintHello() {} public PrintHello(String str) { this.str=str; } @Override public void run() { while(flag){ try { Thread.sleep(1); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(str); } } //關閉執行緒 public void shutdown(){ flag=false; }
}
//計算從1加到100000。計算完成後輸出結果,並關閉PrintHello執行緒。
package thread;
public class Calculation extends Thread {
int sum=0;
@Override
public void run() {
for(int i=1;i<=10000;i++){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
sum+=i;
System.out.println(sum);
}
//關閉PrintHello執行緒
new PrintHello().shutdown();
}
//主程式
package thread;
public class TestThread {
public static void main(String[] args) {
PrintHello thPrint = new PrintHello("Hello");
Calculation thCalc = new Calculation();
thPrint.start();
thCalc.start();
}
}
二、Runnable實現
//列印Hello
package runnable;
public class PrintHello implements Runnable {
private String str;
public PrintHello() {
}
public PrintHello(String str) {
this.str=str;
}
@Override
public void run() {
while(flag){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(str);
}
}
//關閉執行緒
public void shutdown(){
flag=false;
}
}
//計算從1加到100000。計算完成後輸出結果,並關閉PrintHello執行緒。
package runnable;
public class Calculation implements Runnable {
int sum=0;
@Override
public void run() {
for(int i=1;i<=10000;i++){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sum+=i;
System.out.println(sum);
}
//關閉PrintHello執行緒
new PrintHello().shutdown();
}
}
//主程式
package runnable;
public class TestRunnable {
public static void main(String[] args) {
Thread thPrint=new Thread(new PrintHello(“Hello”));
Thread thCalculation=new Thread(new Calculation());
thPrint.start();
thCalculation.start();
}
}
三、Timer實現
package timer;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
class PrintAndCalculation extends TimerTask{
int i=1;
int sum=0;
@Override
public void run() {
Timer timer=new Timer();
if(i>10000){
timer.cancel();
}else{
System.out.println("Hello");
sum+=i;
i++;
System.out.println(sum);
timer.cancel();
}
}
}
public class TimerPrintCalculation {
public static void main(String[] args) {
Timer timer=new Timer();
timer.schedule(new PrintAndCalculation(), new Date(), 1);
}
}