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结合使用。等待验证...

全部评论

相关推荐

虚闻松声:继续投吧。 简历没啥问题。很优秀。 拙见:自我评价没什么意义;试试转向Agent开发、大模型应用;别死磕传统Java开发。 免费修改简历,就业咨询,欢迎私信交流。
点赞 评论 收藏
分享
2024-12-23 10:55
已编辑
大连理工大学 Java
牛客930504082号:华子综测不好好填会挂的,而且填的时候要偏向牛马选项
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务