/**
* 线程API
* @author huawangxin
*
*/
public class ThreadDemo1 {
public static void main(String[] args) {
//获取调用main方法的线程的相关信息
Thread t=Thread.currentThread();
//获取线程ID,通常有系统分配
long id=t.getId();
System.out.println("id:"+id);
/*
* 获取线程的名字,通常有系统指定
* 格式为:Thread-X
* 但是格式用main方法的线程名称不是这个。
*/
String name=t.getName();
System.out.println("name:"+name);
//获取线程的优先级
int p=t.getPriority();
System.out.println("优先级:"+p);
//获取线程状态
System.out.println("state:"+t.getState());
//获取线程是否活着
System.out.println("alive"+t.isAlive());
//获取线程是否为后台
System.out.println("daemon"+t.isDaemon());
//获取线程是否被中断
System.out.println("interrupt"+t.isInterrupted());
}
}
/**
* 线程优先级(默认为5)
* 1-10
* 理论上,线程优先级高的线程,被分配时间的片段的次数多
* @author huawangxin
*
*/
public class ThreadDemo2 {
public static void main(String[] args) {
Thread max=new Thread(){
public void run(){
for(int i=0;i<5000;i++){
System.out.println("max");
}
}
};
Thread min=new Thread(){
public void run(){
for(int i=0;i<5000;i++){
System.out.println("min");
}
}
};
max.setPriority(Thread.MAX_PRIORITY);
min.setPriority(Thread.MIN_PRIORITY);
min.start();
max.start();
}
}
/**
* 后台线程,守护线程
* 特点:
* 当进程中所有前台线程都结束时,后台线程结束,无论后台线程是否还在运行
* @author huawangxin
*/
public class ThreadDemo3 {
public static void main(String[] args) {
//rose 扮演者:前台线程
Thread rose=new Thread(){
public void run(){
for(int i=0;i<10;i++){
System.out.println("rose :let me go!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("rose: AAAAAAAAAAaaaaa");
System.out.println("音效:噗通");
}
};
//jack 扮演者:后台线程
Thread jack=new Thread(){
public void run(){
for(int i=0;i<10;i++){
System.out.println("jack :you jump,I jump!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
rose.start();
//设置后台线程应在start方法之前调用
jack.setDaemon(true);
jack.start();
System.out.println("main方法执行完了");
}
}
关于setDaemon的知识可以参考
【Daemon】这个链接,我觉得讲的挺详细的。
上述如果有不对或者补充的地方,请大家批评和指教,谢谢。