currentThread
1. Thread.currentThread方法
Thread的静态方法currentThread方法可以用于获取运行当前代码片段的线程。
Thread current = Thread.currentThread();
1 /** 2 * 获取当前代码块的线程 3 * @author Administrator 4 * 5 */ 6 7 class TestThreadDemo4{ 8 public static void main(String[] args) { 9 /* 10 * 当程序运行起来时 Os 会启动一个进程来运行 11 * JVM ,而进程启动后会创建一个线程,用这个线程来运行Main方法 12 */ 13 //这里获取的是运行main方法的线程 14 Thread t =Thread.currentThread(); 15 System.out.println("运行main方法的线程是:"+t); 16 17 //main 方法中调用 18 testCurrent(); 19 //创建线程 20 Thread t1 =new Thread(){ 21 @Override 22 public void run() { 23 super.run(); 24 System.out.println("运行T1线程是:"+Thread.currentThread()); 25 testCurrent(); 26 } 27 }; 28 t1.start(); 29 30 31 } 32 /** 33 * 输出调用当前方法的线程 34 */ 35 public static void testCurrent(){ 36 System.out.println("运行testCurrendt方法的线程是:"+Thread.currentThread()); 37 } 38 }
运行main方法的线程是:Thread[main,5,main]
运行testCurrendt方法的线程是:Thread[main,5,main]
运行T1线程是:Thread[Thread-0,5,main]
运行testCurrendt方法的线程是:Thread[Thread-0,5,main]
2. 获取线程信息
Thread提供了 获取线程信息的相关方法:
long getId():返回该线程的标识符 全局唯一的 不能重复
String getName():返回该线程的名称
int getPriority():返回线程的优先级
Thread.state getState():获取线程的状态
boolean isAlive():测试线程是否处于活动状态
boolean isDaemon():测试线程是否为守护线程
boolean isInterrupted():测试线程是否已经中断
1 /** 2 * 获取线程信息的相关方法 3 * @author Administrator 4 * 5 */ 6 class TeatThreadDemo{ 7 public static void main(String[] args) { 8 //获取调用main方法的线程 9 Thread main =Thread.currentThread(); 10 System.out.println("ID:"+main.getId()); 11 System.out.println("name:"+main.getName()); 12 System.out.println("优先级:"+main.getPriority()); 13 System.out.println("状态:"+ main.getState()); 14 System.out.println("是否活动:"+ main.isAlive()); 15 System.out.println("是否为守护进程"+ main.isDaemon()); 16 System.out.println("是否被中断:"+main.isInterrupted()); 17 } 18 }
3. 线程优先级
线程的切换是由线程调度控制的,我们无法通过代码来干涉,但是我们可以通过提高线程的优先级来最大程度的改善线程获取时间片的几率。
线程的优先级被划分为10级,值分别为1-10,其中1最低,10最高。线程提供了3个常量来表示最低,最高,以及默认优先级:
Thread.MIN_PRIORITY,
Thread.MAX_PRIORITY,
Thread.NORM_PRIORITY
设置优先级的方法为:
void setPriority(int priority)
时间: 2024-10-16 14:31:34