多线程(二)

1.两种线程调度模型

分时调度模型:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片。

抢占调度模型(Java使用此模型):让优先级高的线程优先使用CPU。


2.线程优先级(表示线程获取CPU时间片的几率)

范围是1-10,默认优先级是5

设置优先级:my1.setPriority(10); my2.setPriority(1);

获取优先级:my1.getPriority();my2.getPriority();


3.线程控制

线程休眠:Thread.sleep(毫秒);//sleep()是静态方法,可以使用类名.方法名来调用

线程加入:my1.join();//等待该线程终止

线程礼让:Thread.yeild();//暂停当前正在执行的线程对象,将线程让出,大家一起抢线程使用权

守护线程:setDaemon(true);//将该线程标记为守护线程。当正在运行的线程都是守护线程时,Java虚拟机退出。该方法必须在启动线程前调用。

中断线程:my.interrupt();//中断线程

package com.baidu;
import java.util.*;
public class MyThread extends Thread {//MyThread继承Thread类
	public void run() {//重写run方法
		System.out.println("线程开始"+"---"+new Date());
		try {
			Thread.sleep(10000);//休眠10s
		} catch (InterruptedException e) {
			//e.printStackTrace();
			System.out.println("线程被中断");
		}
		System.out.println("线程结束"+"---"+new Date());
	}
}
package com.baidu;

public class Thread_Demo{
	
	public static void main(String[] args) {
		MyThread my = new MyThread();//创建线程对象
		my.start();
		//当时间超过3s时结束线程
		try {
			Thread.sleep(3000);
			my.interrupt();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


4.线程的生命周期
--新建-创建线程对象

--就绪-有执行资格,没有执行权

--运行-有执行资格,有执行权

--阻塞-没有执行资格,没有执行权

--死亡-线程对象变成垃圾,等待回收






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值