1.2线程信息的获取和设置
来源:互联网 发布:gzip linux 编辑:程序博客网 时间:2024/06/05 18:36
1.创建一个实现Runnable接口的Calculate类
public class Calculate implements Runnable{ private int number; public Calculate(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); } }}
2.主类的实现
import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.lang.Thread.State;public class TestThreadInfo { /** * Main method of the example * @param args */ public static void main(String[] args) { //输出线程优先级信息 System.out.printf("Minimum Priority: %s\n",Thread.MIN_PRIORITY); System.out.printf("Normal Priority: %s\n",Thread.NORM_PRIORITY); System.out.printf("Maximun Priority: %s\n",Thread.MAX_PRIORITY); Thread threads[]; Thread.State status[]; //操作10线程,其中5个优先级设置为最大 //5个优先级设置为最小 threads=new Thread[10]; status=new Thread.State[10]; for (int i=0; i<10; i++){ threads[i]=new Thread(new Calculate(i)); if ((i%2)==0){ threads[i].setPriority(Thread.MAX_PRIORITY); } else { threads[i].setPriority(Thread.MIN_PRIORITY); } //设置线程的名字 threads[i].setName("Thread "+i); } // Wait for the finalization of the threads. Meanwhile, // write the status of those threads in a file try (FileWriter file = new FileWriter(".\\data\\log.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]); status[i]=threads[i].getState(); } } finish=true; for (int i=0; i<10; i++){ finish=finish &&(threads[i].getState()==State.TERMINATED); } } } catch (IOException e) { e.printStackTrace(); } } /** * This method writes the state of a thread in a file * @param pw : PrintWriter to write the data * @param thread : Thread whose information will be written * @param state : Old state of the thread */ 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"); }}
3.输入到log.txt中的结果
Main : Status of Thread 0 : NEW
Main : Status of Thread 1 : NEW
Main : Status of Thread 2 : NEW
Main : Status of Thread 3 : NEW
Main : Status of Thread 4 : NEW
Main : Status of Thread 5 : NEW
Main : Status of Thread 6 : NEW
Main : Status of Thread 7 : NEW
Main : Status of Thread 8 : NEW
Main : Status of Thread 9 : NEW
Main : Id 10 - Thread 0
Main : Priority: 10
Main : Old State: NEW
Main : New State: BLOCKED
Main : **************************
Main : Id 11 - Thread 1
Main : Priority: 1
Main : Old State: NEW
Main : New State: RUNNABLE
Main : **************************
Main : Id 12 - Thread 2
Main : Priority: 10
Main : Old State: NEW
Main : New State: TERMINATED
Main : **************************
Main : Id 13 - Thread 3
Main : Priority: 1
Main : Old State: NEW
Main : New State: TERMINATED
Main : **************************
Main : Id 14 - Thread 4
Main : Priority: 10
Main : Old State: NEW
Main : New State: BLOCKED
Main : **************************
Main : Id 15 - Thread 5
Main : Priority: 1
Main : Old State: NEW
Main : New State: RUNNABLE
Main : **************************
Main : Id 16 - Thread 6
Main : Priority: 10
Main : Old State: NEW
Main : New State: TERMINATED
Main : **************************
Main : Id 17 - Thread 7
Main : Priority: 1
Main : Old State: NEW
Main : New State: TERMINATED
Main : **************************
Main : Id 18 - Thread 8
Main : Priority: 10
Main : Old State: NEW
Main : New State: BLOCKED
Main : **************************
Main : Id 19 - Thread 9
Main : Priority: 1
Main : Old State: NEW
Main : New State: RUNNABLE
Main : **************************
Main : Id 15 - Thread 5
Main : Priority: 1
Main : Old State: RUNNABLE
Main : New State: BLOCKED
Main : **************************
Main : Id 18 - Thread 8
Main : Priority: 10
Main : Old State: BLOCKED
Main : New State: RUNNABLE
Main : **************************
Main : Id 19 - Thread 9
Main : Priority: 1
Main : Old State: RUNNABLE
Main : New State: BLOCKED
Main : **************************
Main : Id 11 - Thread 1
Main : Priority: 1
Main : Old State: RUNNABLE
Main : New State: BLOCKED
Main : **************************
Main : Id 18 - Thread 8
Main : Priority: 10
Main : Old State: RUNNABLE
Main : New State: TERMINATED
Main : **************************
Main : Id 14 - Thread 4
Main : Priority: 10
Main : Old State: BLOCKED
Main : New State: RUNNABLE
Main : **************************
Main : Id 14 - Thread 4
Main : Priority: 10
Main : Old State: RUNNABLE
Main : New State: TERMINATED
Main : **************************
Main : Id 10 - Thread 0
Main : Priority: 10
Main : Old State: BLOCKED
Main : New State: TERMINATED
Main : **************************
Main : Id 19 - Thread 9
Main : Priority: 1
Main : Old State: BLOCKED
Main : New State: TERMINATED
Main : **************************
Main : Id 11 - Thread 1
Main : Priority: 1
Main : Old State: BLOCKED
Main : New State: TERMINATED
Main : **************************
Main : Id 15 - Thread 5
Main : Priority: 1
Main : Old State: BLOCKED
Main : New State: TERMINATED
Main : **************************
- 1.2线程信息的获取和设置
- (一)线程管理_2---获取和设置线程信息
- 线程管理之获取和设置线程信息
- 2.多线程学习--获取和设置线程信息
- Java并发编程示例(二):获取和设置线程信息
- Java并发编程示例(二):获取和设置线程信息
- java并发编程-1.2线程信息获取和设置(ID,名称、优先级、状态)
- 并发编程--线程信息的获取与设置
- 线程优先级设置和获取
- Java并发学习之二——获取和设置线程信息
- (五)线程--定制线程及设置和获取线程的优先级别(示例下载)
- (五)线程--定制线程及设置和获取线程的优先级别(示例下载)
- (五)线程--定制线程及设置和获取线程的优先级别(示例下载)
- Java并发编程-01-线程的创建和线程信息获取
- 获取和设置linux全局代理信息
- 获取远程控制相关信息和设置
- [Java并发编程]-二、线程信息获取与设置
- 线程运行栈信息的获取
- 找出一个字符串中重复最多的字符以及出现的次数
- SpringMVC批量插入,js点击按钮自动增加一行
- java学习日记_29:面向对象之JDK帮助文档的使用。08.06至07
- 项目小结(1)
- Java中异常的限制
- 1.2线程信息的获取和设置
- 闭门造车【NOIP2016提高A组模拟9.10】
- HDU 1015 Safecracker (dfs)
- HDU 5879 Cure
- 链表的相关函数
- 安装openstack前的准备
- c/c++ 各个类型所占的字节数
- Java编程中在子类重载方法中调用父类中该方法时,该方法包含递归时出现的调用错误
- Linux系统tput命令用法实例详解