第二章:簡單 Java 程式解析
第三章:變數與資料型態
第四章:運算子、運算式與敘述
第五章:選擇性敘述與迴圈
第十章:實例變數與函數、類別變數與函數
Powered By GitBook
凍結執行緒 sleep()
認識多執行緒 中的範例,故意加了一個拖慢執行緒的迴圈; 那透過讓執行緒小睡片刻,如此便可稍緩執行緒的執行。
1
for(int i=0;i<3;i++)
2
{
3
for(int j=0;j<100000000;j++);
4
System.out.println(name);
5
}
Copied!
我們可以在迴圈內加個 sleep(),在[Java]執行緒生命週期(介紹)附註中提到:
sleep() 函數,可用來設定睡眠時間,即 sleep(long millis)。 毫秒(千分之一秒)。
例如 sleep(1000) 就代表睡1秒鐘(1秒後就會醒來)。
因此將迴圈改成:
1
for(int i=0;i<3;i++)
2
{
3
try
4
{
5
sleep((int)(1000*Math.random()));
6
}
7
catch(InterruptedException e){}
8
System.out.println(name);
9
}
Copied!
sleep() 可能會拋出 InterruptedException 例外,所以我們將 sleep() 撰寫在 try-catch 區塊內。
而 sleep() 的引數 (int)(1000*Math.random()) 部分: 我們透過 Math.random() 來產生 0~1的浮點數亂數,乘上1000 即 0~1000 之間的浮點數亂數; 最後在前面強制轉型成整數,所以加上(int)。

完整的程式碼

1
class multi_Test
2
{
3
private String name;
4
public multi_Test(String str)
5
{
6
name=str;
7
}
8
public void show()
9
{
10
for(int i=0;i<3;i++)
11
{
12
try
13
{
14
sleep((int)(1000*Math.random()));
15
}
16
catch(InterruptedException e){}
17
System.out.println(name);
18
}
19
}
20
}
21
22
public class multi_thread_3
23
{
24
public static void main(String args[])
25
{
26
multi_Test apple=new multi_Test("apple");
27
multi_Test pen=new multi_Test("pen");
28
apple.start();
29
pen.start();
30
}
31
}
Copied!
Last modified 9mo ago
Copy link