線程的常用操作
static int |
activeCount() 返回活動線程數(shù)量 |
static Thread |
currentThread() 返回當(dāng)前線程 |
ClassLoader |
getContextClassLoader() 返回類加載器 |
long |
getId() 返回線程的id,每個線程都有唯一 的id |
String |
getName() 返回線程名稱. |
int |
getPriority() 返回線程優(yōu)先級 |
Thread.State |
getState() 返回線程狀態(tài) |
void |
interrupt() 中斷線程. |
static boolean |
interrupted() 判斷線程的中斷狀態(tài) |
boolean |
isAlive() 判斷線程是否終止 |
boolean |
isDaemon() 是否為守護(hù)線程 |
boolean |
isInterrupted() 判斷線程的中斷狀態(tài) |
void |
join() 線程合并 |
void |
run() |
void |
setDaemon(boolean on) 設(shè)置線程為守護(hù)線程 |
void |
setName(String name) 設(shè)置線程名稱 |
void |
setPriority(int newPriority) 設(shè)置優(yōu)先級 |
static void |
sleep(long millis)線程睡眠(休眠) |
void |
start() 開啟新的線程 |
void |
stop() 線程終止 |
String |
toString() |
static void |
yield() 線程讓步 |
package com.wkcto.chapter07.method;
/**
* 演示線程的基本操作
* Thread.currentThread() 返回當(dāng)前線程
* t1.getName() 返回線程名稱, 線程默認(rèn)名稱 : Thread-0 / Thread-1
* t1.setName("t1") 設(shè)置線程名稱
* t1.isAlive() 判斷線程是否終止
* Thread.activeCount() 活動線程的數(shù)量
* @author 蛙課網(wǎng)
*
*/
public class Test01 {
public static void main(String[] args) {
Thread t1 = new Thread( new Runnable() {
@Override
public void run() {
for( int i = 1; i<=100; i++){
// System.out.println("sub thread: " + i);
System.out.println( Thread.currentThread().getName() + "==>" + i);
}
}
});
t1.setName("t1");
t1.start();
new Thread( new Runnable() {
@Override
public void run() {
for( int i = 1; i<=100; i++){
System.out.println( Thread.currentThread().getName() + "====>" + i);
}
}
}, "t2").start();
System.out.println("11 : " + Thread.activeCount() ); //活動線程的數(shù)量
//main線程
for( int i = 1; i<=100; i++){
System.out.println( Thread.currentThread().getName() + "------->" + i);
}
System.out.println( "t1 alive: " + t1.isAlive());
System.out.println("22 : " + Thread.activeCount() ); //活動線程的數(shù)量
}
}
package com.wkcto.chapter07.method;
/**
* 守護(hù)線程
* 為其他線程服務(wù)的, 不能單獨運行 , 當(dāng)JVM中只有守護(hù)線程時, JVM退出
* @author 蛙課網(wǎng)
*
*/
public class Test02 {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 1; i <= 100; i++) {
System.out.println(Thread.currentThread().getName() + "--> " + i);
}
}
} , "t1");
t1.start();
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 1; i <= 500; i++) {
System.out.println(Thread.currentThread().getName() + "----> " + i);
}
}
} , "t2");
t2.setDaemon( true ); //設(shè)置線程為守護(hù)線程
t2.start();
//main線程
for (int i = 1; i <= 100; i++) {
System.out.println(Thread.currentThread().getName() + "==> " + i);
}
}
}
package com.wkcto.chapter07.method;
/**
* 判斷線程的狀態(tài)
* @author 蛙課網(wǎng)
*
*/
public class Test03 {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 1; i <= 100; i++) {
System.out.println(Thread.currentThread().getName() + "--> " + i);
}
}
});
System.out.println("111: " + t1.getState()); //111: NEW 新建狀態(tài),剛剛創(chuàng)建了線程對象
t1.start();
System.out.println("222: " + t1.getState()); //222: RUNNABLE 可運行狀態(tài),就緒狀態(tài), 調(diào)用了start()
//main線程
for (int i = 1; i <= 300; i++) {
System.out.println(Thread.currentThread().getName() + "--> " + i);
}
System.out.println("333: " + t1.getState()); //333: TERMINATED 終止?fàn)顟B(tài),線程已結(jié)束
}
}
線程的生命周期