---------------------- android培訓、java培訓、期待與您交流! ----------------------
1.創建線程的兩種方式: 一種方法是將類聲明爲 Thread 的子類。該子類應重寫 Thread 類的 run 方法。接下來可以分配並啓動該子類的實例。如:
class PrimeThread extends Thread{
longminPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
publicvoid run() {
// compute primes larger thanminPrime
?.?.?.
}
}
然後,下列代碼會創建並啓動一個線程:
PrimeThreadp = new PrimeThread(143);
p.start();
創建線程的另一種方法是聲明實現 Runnable 接口的類。該類然後實現 run 方法。然後可以分配該類的實例,在創建Thread 時作爲一個參數來傳遞並啓動。採用這種風格的同一個
例子如下所示:
classPrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
publicvoid run() {
//compute primes larger than minPrime
.. .
} }
然後,下列代碼會創建並啓動一個線程:
PrimeRun p= new PrimeRun(143);
newThread(p).start();
Thread類:
構造方法:
Thread() |
常用方法:
static Thread |
currentThread() |
static int |
activeCount() |
long |
getId() |
getName() |
|
int |
getPriority() |
void |
interrupt() |
static boolean |
interrupted() |
boolean |
isAlive() |
boolean |
isDaemon() |
boolean |
isInterrupted() |
void |
join() |
void |
join(long millis) |
void |
setDaemon(boolean on) |
void |
|
void |
setPriority(int newPriority) |
static void |
sleep(long millis) |
toString() |
|
static void |
yield() |
例子:
public class Thread1 {
public static void main(String[] args) {
Thread thread = new Thread() {
public void run() {
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("yi1:"
+ Thread.currentThread().getName());
System.out.println("yi2:" + this.getName());
}
}
};
thread.start();
// 下面不能用this.getName()
Thread thread2 = new Thread(new Runnable() {
public void run() {
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("er1:"
+ Thread.currentThread().getName());
}
}
});
thread2.start();
new Thread(new Runnable() {
public void run() {
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("san runnable:"
+ Thread.currentThread().getName());
}
}
}) {
public void run() {
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("san thread :"
+ Thread.currentThread().getName());
}
}
}.start();
}}
運行的是Thread重寫的方法,不是Runnable中的run方法。
---------------------- android培訓、java培訓、期待與您交流! ----------------------