网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月29日漏签0天
.net培训吧 关注:950贴子:1,435
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 4回复贴,共1页
<<返回.net培训吧
>0< 加载中...

java中如何停止线程【嘉华教育】

  • 只看楼主
  • 收藏

  • 回复
  • 故人叹02
  • 核心吧友
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1L,度娘。


  • 故人叹02
  • 核心吧友
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


2025-06-29 08:00:18
广告
  • 故人叹02
  • 核心吧友
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一般来说线程执行完run()之后就自动结束了,不过有些时候我们需要线程不停的做一些事情,也就是使用while循环,那么这时候该如何停止线程呢?


  • 故人叹02
  • 核心吧友
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如果需要退出时,调用setStop()即可。这里使用了一个Java关键字volatile,这个关键字的目的是使isStop同步,也就是说在同一时刻只能由一个线程来修改isStop的值。
如果线程做的事情是耗时或者说阻塞的(如调用了sleep,同步锁的wait,socket的receiver,accept等方法),那么就需要用到interrupt()了,调用该函数时会抛出InterruptedException异常,代码中通过捕获该异常,然后break出循环,就可以了。


  • 故人叹02
  • 核心吧友
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这里既然说到了interrupt(),那么就不得不提另外两个函数:interrupted()和isInterrupted。看下这两个函数的作用:
public static boolean interrupted()
测试当前线程是否已经中断,并且清除线程的中断状态。
public boolean isInterrupted()
测试线程是否已经中断,线程的中断状态不受该方法的影响。
这两个函数的返回值含义:
如果当前线程已经中断,则返回 true;否则返回 false。
其实当线程阻塞并且调用了interrupt()时,不止是抛出InterruptedException异常还会调用interrupted()来清除线程的中断状态,所以在catch里面调用isInterrupted()会返回false。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 4回复贴,共1页
<<返回.net培训吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示