Java 多线程之Thread类的常用方法及线程调度优先级等

1.Thread类常用方法

  1. start():启动线程并执行相应的run()方法
  2. run():子线程要执行的代码放入run()方法中
  3. currentThread():静态的,调取当前线程
  4. getName():获取此线程的名字
  5. setName():设置此线程的名字
  6. yield():调用此方法的线程释放当前CPU的执行权
  7. join():在A线程中调用B线程的join()方法,表示当执行到此方法,A线程停止执行,指导B线程执行完毕,A线程在接着join()之后的代码执行
  8. isAlive():判断线程是否还存活
  9. sleep(long lon):显示的让当前线程睡眠lon毫秒

2. 线程通信:wait() notify() notifyAll()

后续写线程通信的时候补充。

3.线程的调度

1. 调度策略

  1. 时间片
    时间片in
  2. 抢占式:高优先级的线程抢占CPU

2.Java的调度方法

  1. 同优先级线程组成先进先出队列(先到先服务),使用时间片策略
  2. 对高优先级,使用优先调度的抢占式策略

3.线程的优先级

  1. 线程的优先级控制
    ① MAX_PRIORITY(10);
    ② MIN _PRIORITY (1);
    ③ NORM_PRIORITY (5);
  2. 涉及的方法:
    ① getPriority() :返回线程优先值
    ② setPriority(int newPriority) :改变线程的优先级
    ③ 线程创建时继承父线程的优先级

4.Demo

class SubThread extends Thread{
	public void run() {
		for (int i = 1; i <= 100; i++) {
//			try {
				Thread.currentThread().sleep(1000);//无法throws异常,思考为什么?
//			} catch (InterruptedException e) {
//				e.printStackTrace();
//			}
			System.out.println(Thread.currentThread().getName()+ ":"+Thread.currentThread().getPriority()+":"+i);
		}
	}
}
public class TestThreadMethod {
	public static void main(String[] args) {
		SubThread st = new SubThread();
		st.setName("子线程");
		st.setPriority(Thread.MAX_PRIORITY);
		st.start();
		Thread.currentThread().setName("主线程");
		for (int i = 1; i <= 100; i++) {			
			System.out.println(Thread.currentThread().getName()+ ":"+Thread.currentThread().getPriority()+":"+i);
//			if(i % 10 == 9) {
//				Thread.currentThread().yield();
//			}
//			if(i  == 20 ) {
//				try {
//					st.join();
//				} catch (InterruptedException e) {
//					e.printStackTrace();
//				}
//			}
		}
		System.out.println(st.isAlive());//false
	}
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值