---------------------- 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培训、期待与您交流! ----------------------