Java多线程的一些小思考

1、什么情况下会抛出InterruptedException
首先从字面意思来讲
InterruptedException是指的中断异常。
从程序设计角度来讲,是否中断是设置一个boolean的标志位进行判断的
首先从六种状态来分析
new、running、waiting、time_waiting、block、end
很显然,这个状态和new、waiting、time_waiting、end没关系。很多人似乎都在说,这个状态跟block相关,但是我的理解。只有running状态有可能被中断。也就是说如果线程b调用阻塞方法(或者说b在运行),如果中断标志设为true,那么会抛出该异常.也就是wait、sleep、join等方法都可能抛出该异常

2、为什么会抛出InterruptedException异常
举个例子:我一个吹风机用着用着,你给我把电拔了,我头还没吹干,自然要抛出异常。说白了就是我还没运行完你就打断我。

3、中断复位的方法
常用的notify和notifyAll

4、为什么wait/notify需要加synchronized
行吧...notifyAll也要和synchronized一起(具有强迫症的我)
多线程的实质是有多条路径一起走,他们独立运行又有一定联系
wait/notify字面意思是等待和告知。
wait是让使用wait方法的对象等待,暂时先把对象锁给让出来,给其它持有该锁的对象用,其它对象用完后再告知(notify)等待的那个对象可以继续执行了,整个过程就是这样。
说白了也就是,你没加锁我本来就可以拿到的资源,干嘛非要等你把资源让给我...(wait)。我本来就可以用资源,干嘛非让你通知我你不用了我才用(notify)。所以我的理解就是这两个方法存在的意义就是为了解决共享资源不能同时访问的问题。但是能不能用其他加锁的方式(比如ReentrantLock)和wait/notify结合使用。等待验证...

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 18:25
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务