javase复习系列之--多线程篇

(一)start一个线程

//最常见的创建线程的伪代码如下:
class MyThread extends Thread {
    public void run(){
        //dosomething
    }
    public static void main(String[] args){
        new MyThread().start();
    }
}

但是在任务有很多的的时候就不推荐一这种方式来实现多线程了,因为要为每一个任务创建一个独立的线程开销太大,应该采用线程池来解决这个问题,我下面会详细讲解这个问题。

(二)线程状态
New(新创建)
Runnable(可运行)
Blocked(被阻塞)
Waiting(等待)
Timeed waiting(计时等待)
Terminated(被终止)
getState()可以得到当前状态。

(三)中断一个线程

早期版本中一般是使用stop方法,但是现在已经废弃了,改用interrupt方法。
本想研究一下底层源码,但是发现有太多本地方法了,所以就放弃了,调用interrupt()之后,线程的中断状态会被置位,
要想确认中断状态是否被置位,可以用以下代码:

while(Thread.currentThrad().isInterrupted()){
    //被打断之后可以dosomething
}

线程如果被阻塞(调用sleep或者wait)时还调用它的interrupt(),这个时候会抛出InterruptException,线程将会异常中断

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值