当前位置: 首页 > news >正文

宾川网站建设天津房屋装修设计公司

宾川网站建设,天津房屋装修设计公司,外链平台,网站建设公司果动线程的中断 1.应用场景#xff1a; 假设从网络下载一个100M的文件#xff0c;如果网速很慢#xff0c;用户等得不耐烦#xff0c;就可能在下载过程中点“取消”#xff0c;这时#xff0c;程序就需要中断下载线程的执行。 2.常用中断线程的方法#xff1a; 1.使用标…线程的中断 1.应用场景 假设从网络下载一个100M的文件如果网速很慢用户等得不耐烦就可能在下载过程中点“取消”这时程序就需要中断下载线程的执行。 2.常用中断线程的方法 1.使用标志位 2.interrupt 1如果当前线程sleep,wait或因为其他线程使用join()而陷入阻塞状态那么当在其他线程中调用了该线程的interrupt()方法时join()等方法会立刻抛出InterruptedException异常目标线程只要捕获到该异常会立刻结束运行 2interrupt()不能中断I/O阻塞和synchronized锁阻塞 关于重置中断标志位 isInterrupted()---不清除中断标志位当前线程 public boolean isInterrupted() {//实例方法不会重置标志位return isInterrupted(false);} interrupted()-----清除中断标志位又变成false调用该方法的当前线程对象public static boolean interrupted() {//静态方法会重置标志位return currentThread().isInterrupted(true);}3.代码 3.1自己设置中断标志位 class MyThreadTest extends Thread{ public volatile boolean flagtrue; Override public void run() {//1.标志位 while(flag){System.out.println(Thread.currentThread().getName()是否中断---Thread.currentThread().isInterrupted()------Thread.currentThread().getState()); } System.out.println(-----触发中断标志中断了---); }//测试的代码Test public void test1() throws InterruptedException {MyThreadTest t new MyThreadTest(线程1);t.start();Thread.sleep(1);t.flag false; }3.2调用 interrupt() interrupted() 自定义线程测试 class MyThread2 extends Thread { Override public void run() {while (!isInterrupted()) {System.out.println(Thread.currentThread().getName() 是否中断--- Thread.interrupted() ------ Thread.currentThread().getState());}System.out.println(Thread.currentThread().getName() end Thread.interrupted());System.out.println(Thread.currentThread().getName() end Thread.interrupted());}}//测试的代码Test public void test2() throws InterruptedException {MyThread2 t2new MyThread2();t2.start();Thread.sleep(1);t2.interrupt(); }直接在主线程测试 public static void main(String[] args) throws InterruptedException {Thread.currentThread().interrupt(); System.out.println(Thread.interrupted()); System.out.println(Thread.interrupted()); } }isInterrupted() 自定义线程类 class MyThread3 extends Thread {Overridepublic void run() {while (!isInterrupted()) {System.out.println(Thread.currentThread().getName() 是否中断--- Thread.currentThread().isInterrupted() ------ Thread.currentThread().getState());}System.out.println(Thread.currentThread().getName() end Thread.currentThread().isInterrupted());System.out.println(Thread.currentThread().getName() end Thread.currentThread().isInterrupted());} }Test public void test3() throws InterruptedException {MyThread3 t3new MyThread3();t3.start();Thread.sleep(1);t3.interrupt(); }在主线程中测试 public static void main(String[] args) throws InterruptedException {Thread.currentThread().interrupt();System.out.println(Thread.currentThread().isInterrupted());System.out.println(Thread.currentThread().isInterrupted()); } }4.总结比较 1.最好使用isInterrupted()方法进行中断标志的判断因为不会重置标志位 2.对目标线程调用interrupt()方法可以请求中断一个线程目标线程通过检测isInterrupted()标志获取自身是否已中断。 如果目标线程处于等待状态该线程会捕获到InterruptedException 3.目标线程检测到isInterrupted()为true或者捕获了InterruptedException都应该立刻结束自身线程 4.通过标志位判断需要正确使用volatile关键字 volatile关键字解决了共享变量在线程间的可见性问题。
http://www.hkea.cn/news/14384680/

相关文章:

  • 网站如何免费做SEO优化衡水做网站企业
  • 深圳集团网站建设专业公司百度网站大全旧版
  • 网站优化推广 视屏龙岩新罗区
  • 广州网站建设484186商标注册网上申请
  • 公司网站建设费用多少关键词排名seo优化
  • 南开做网站wordpress 搜索 多个词
  • 高端商城网站建设石排镇仿做网站
  • 网站建设的图片怎么加水印长沙正规seo优化价格
  • 做门用什么网站好做房地产咨询网站怎么赢利
  • 网站建设分金手指排名二七网站开发 原理
  • 常州网站开发公司深圳市珠宝网站建设
  • 网站的标签怎么修改网站建设客户常问到的问题
  • 网站服务器可以更换吗网站建设仟首先金手指13
  • 枣庄市住房和城乡建设局网站企业网站建设国内外差异
  • net网络网站建设wordpress怎样改头像
  • 杯子网站开发方案模板wordpress 默认文章形式
  • h5高端网站建设视频号视频二维码
  • 凡科建设网站的步骤php免费开源crm系统
  • 常德市建设工程造价网站百度识图 上传图片
  • 做内部优惠券网站赚钱吗aspnet网站模板
  • 帮做论文网站吗商城开发哪家好
  • 网站制作厦门电商分销系统
  • 网站做聚合页面方案如何写广州市官网网站建设哪家好
  • 婚纱网站排行网站建设团队扬州
  • 安徽省建设工程造价管理协会网站个人网站源码进一品资源
  • 大连市网站制作电话楼市最新消息2023
  • 安平县做百度网站电话站长工具友链查询
  • 福州专业网站建设推广费用好用建站模板
  • 杭州旅游团购网站建设dw做网站的流程
  • seo站长常用工具公司网站SEO优化哪个做得好