多线程的一点讲解

sleep这个方法是需要一个long类型的参数的,表示休眠多少毫秒。你没有怎么行啊。

至于你的疑惑,首先要明白3个概念,线程的3中状态,就绪态,阻塞态,运行态。
所谓的多线程并不是指所有的线程“同时”运行。 而是有一个时间片轮转机制来控制谁上谁下的。
打个比方,现在有一个苹果(比喻cpu),4个小孩(4个线程),当每个小孩都调用start()之后,他们都进入了就绪态,然后不是说他们一起上去同时咬这个苹果,而是一个上去咬几口(他是运行态),其他的还是(就绪态),过一段时间之后,换一个上(至于换的是谁,根据优先级计算概率随机选择),然后再重复的一个一个上。

关于sleep方法,给一个参数8000,即mt1。sleep(8000),也就是我这个小孩运行到这条语句的时候要歇8秒,这个时候我就是阻塞态,在这8秒里面,即使轮到我上,我也不能上。

关于优先级,Thread有一个方法setPriority(int newPriority) ,你传个10表示优先级最高,传个1表示优先级最低,默认是5,Thread类给了常量来表示他们。 也就是说优先级高的上的机会大,低的上的机会小。

总结: 多线程不是指多个线程同时运行,而是根据优先级轮流运行,只是cpu的运行速度很快,有时候我们把他认为是同时运行。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值