Java并发学习之二——获取和设置线程信息
文章转载为http://blog.csdn.net/junshuaizhang/article/details/38443315,供自己学习用
Thread类的对象中保存了一些属性信息能够帮助我们辨别每一个线程,知道它的一些信息
ID:每个线程的独特标示;
Name:线程的名称;
Priority:线程对象的优先级。优先级别在1-10之间,1是最低级,10是最高级。
Status:线程状态。在Java中,线程只有6种状态:new,runnable,blocked,waiting,time waiting 或terminated。
现在写一个程序,将线程的信息保存到文件中方便查看
1 package chapter; 2 3 public class Calculator2 implements Runnable{ 4 5 private int number; 6 public Calculator2(int number){ 7 this.number = number; 8 } 9 10 @Override 11 public void run() { 12 // TODO Auto-generated method stub 13 for (int i = 0; i < 10; i++) { 14 System.out.printf("%s:%d*%d = %d\n",Thread.currentThread().getName(),number,i,i*number); 15 } 16 } 17 }
1 package chapter; 2 import java.io.FileWriter; 3 import java.io.PrintWriter; 4 import java.lang.Thread.State; 5 6 public class Main2 { 7 8 /** 9 * <p> 10 * </p> 11 * @author zhangjunshuai 12 * @date 2014-8-8 下午3:36:20 13 * @param args 14 */ 15 public static void main(String[] args) { 16 // TODO Auto-generated method stub 17 18 Thread[] threads = new Thread[10]; 19 Thread.State[] status = new Thread.State[10]; 20 for (int i = 0; i < 10; i++) { 21 threads[i] = new Thread(new Calculator2(i)); 22 if((i%2) == 0) 23 threads[i].setPriority(Thread.MAX_PRIORITY); 24 else 25 threads[i].setPriority(Thread.MIN_PRIORITY); 26 threads[i].setName("Thread"+i); 27 } 28 try{ 29 FileWriter file = new FileWriter(".\\xianchenglog1.txt"); 30 PrintWriter pw = new PrintWriter(file); 31 for(int i =0;i<10;i++){ 32 pw.println("main: status of thread "+i+": "+threads[i].getState()); 33 status[i] = threads[i].getState(); 34 } 35 36 for(int i =0;i<10;i++){ 37 threads[i].start(); 38 } 39 boolean finish = false; 40 while(!finish){ 41 for (int i = 0; i < 10; i++) { 42 if(threads[i].getState()!=status[i]){ 43 writeThreadInfo(pw,threads[i],status[i]); 44 } 45 } 46 finish = true; 47 } 48 pw.close(); 49 }catch(Exception e){ 50 51 } 52 53 54 } 55 private static void writeThreadInfo(PrintWriter pw, Thread thread, State state) { 56 pw.printf("Main : Id %d - %s\n",thread.getId(),thread.getName()); 57 58 pw.printf("Main : Priority: %d\n",thread.getPriority()); 59 60 pw.printf("Main : Old State: %s\n",state); 61 62 pw.printf("Main : New State: %s\n",thread.getState()); 63 64 pw.printf("Main : ************************************\n"); 65 66 } 67 68 69 }

浙公网安备 33010602011771号