深入研究java线程优先级

来源:互联网 发布:淘宝一键装修免费模板 编辑:程序博客网 时间:2024/05/17 21:57

/** * 线程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】这个链接,我觉得讲的挺详细的。


上述如果有不对或者补充的地方,请大家批评和指教,谢谢。


0 0
原创粉丝点击