Java并发学习之二——获取和设置线程信息
2016-03-13 21:03
573 查看
本文是学习网络上的文章时的总结,感谢大家无私的分享。
Thread类的对象中保存了一些属性信息可以帮助我们辨别每个线程。知道它的一些信息
ID:每一个线程的独特标示;
Name:线程的名称;
Priority:线程对象的优先级。
优先级别在1-10之间。1是最低级,10是最高级。
Status:线程状态。在java中,线程仅仅有6种状态:new,runnable,blocked,waiting,time
waiting 或terminated。
如今写一个程序,将线程的信息保存到文件里方便查看
Thread类的对象中保存了一些属性信息可以帮助我们辨别每个线程。知道它的一些信息
ID:每一个线程的独特标示;
Name:线程的名称;
Priority:线程对象的优先级。
优先级别在1-10之间。1是最低级,10是最高级。
Status:线程状态。在java中,线程仅仅有6种状态:new,runnable,blocked,waiting,time
waiting 或terminated。
如今写一个程序,将线程的信息保存到文件里方便查看
package chapter; public class Calculator2 implements Runnable{ private int number; public Calculator2(int number){ this.number = number; } @Override public void run() { // TODO Auto-generated method stub for (int i = 0; i < 10; i++) { System.out.printf("%s:%d*%d = %d\n",Thread.currentThread().getName(),number,i,i*number); } } }
package chapter; import java.io.FileWriter; import java.io.PrintWriter; import java.lang.Thread.State; public class Main2 { /** * <p> * </p> * @author zhangjunshuai * @date 2014-8-8 下午3:36:20 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Thread[] threads = new Thread[10]; Thread.State[] status = new Thread.State[10]; for (int i = 0; i < 10; i++) { threads[i] = new Thread(new Calculator2(i)); if((i%2) == 0) threads[i].setPriority(Thread.MAX_PRIORITY); else threads[i].setPriority(Thread.MIN_PRIORITY); threads[i].setName("Thread"+i); } try{ FileWriter file = new FileWriter(".\\xianchenglog1.txt"); PrintWriter pw = new PrintWriter(file); for(int i =0;i<10;i++){ pw.println("main: status of thread "+i+": "+threads[i].getState()); status[i] = threads[i].getState(); } for(int i =0;i<10;i++){ threads[i].start(); } boolean finish = false; while(!finish){ for (int i = 0; i < 10; i++) { if(threads[i].getState()!=status[i]){ writeThreadInfo(pw,threads[i],status[i]); } } finish = true; } pw.close(); }catch(Exception e){ } } private static void writeThreadInfo(PrintWriter pw, Thread thread, State state) { pw.printf("Main : Id %d - %s\n",thread.getId(),thread.getName()); pw.printf("Main : Priority: %d\n",thread.getPriority()); pw.printf("Main : Old State: %s\n",state); pw.printf("Main : New State: %s\n",thread.getState()); pw.printf("Main : ************************************\n"); } }
相关文章推荐
- leetcode:Climbing Stairs 【Java】
- 20145225 《Java程序设计》第2周学习总结
- Java编程思想学习(十四) 枚举
- spring中的cron表达式
- 20145213《Java程序设计》第二周学习总结
- java.sql.SQLException: ORA-00904:标识符无效
- 【RxJava Demo分析】(四)RxBus
- 深入理解Java String#intern() 内存模型
- Java之矩阵相减(A-B)
- spring mvc(注解)上传文件的简单例子
- Java 重写 equals 的小模板
- Java之矩阵相加(A+B)
- java.util.vector中的vector的详细用法【转】
- Java 反射 Reflection
- JDK source 之 ArrayList 需要注意事项
- 我对java这门课的认识
- spring中的依赖注入和控制反转(一)
- java设计模式——结构型之代理模式
- java线程之间的通信(等待/通知机制)
- Struts2 action之间相互跳转传递参数