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

织金县政府关于网站建设seo网站关键词优化多少钱

织金县政府关于网站建设,seo网站关键词优化多少钱,网站建设是基础服务吗,网站排名带照片怎么做如何中断一个线程? 首先一个线程不应该由其他线程来强制中断或者停止,而是应该由线程自己自行停止。所以我们看到线程的stop()、resume()、suspend()等方法已经被标记为过时了。 其次在java中没有办法立即停止一个线程,然而停止线程显得尤为重…

如何中断一个线程?

        首先一个线程不应该由其他线程来强制中断或者停止,而是应该由线程自己自行停止。所以我们看到线程的stop()、resume()、suspend()等方法已经被标记为过时了。

        其次在java中没有办法立即停止一个线程,然而停止线程显得尤为重要,比如取消一个耗时的操作。因此java提供了一种用于停止线程的协商机制 - 中断,也就是中断标识协商机制。如果你要中断一个线程,你需要手动调用该线程的interrupt方法,改方法仅仅将该线程对象的中断标设置成true,接着程序员需要自己写代码不断的检测当前线程的标识位。

中断线程三个相关方法

interrupt()

        该方法是一个实例方法,仅仅是设置线程的中断标识状态为true,发起一个协商而不会立即停止改线程。

interrupted()

        该方法是一个静态方法,判断线程是否被中断并清除当前线程中断状态。该方法干了两个事情:

  1. 返回当前线程中断状态,测试当前线程是否已经被中断
  2. 将当前线程的中断状态重新设置成false,清除线程的中断状态

isInterrupted()

        该方法是一个实例方法,判断当前线程是否被中断

中断一个线程的正确姿势

volatile关键字修饰的变量

    static volatile boolean volatileStop = false;public static void main(String[] args) {new Thread(() -> {while (true) {if (volatileStop) {System.out.println(Thread.currentThread().getName() + ",跳出当前循环");break;}System.out.println(Thread.currentThread().getName() + ",hell volatile");}}, "A").start();try {TimeUnit.MILLISECONDS.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}new Thread(() -> {volatileStop = true;}, "B").start();}

通过AtomicBoolean

   static AtomicBoolean atomicStop = new AtomicBoolean();public static void main(String[] args) {new Thread(() -> {while (true) {if (atomicStop.get()) {System.out.println(Thread.currentThread().getName() + ",atomicStop被设置成true,跳出当前循环");break;}System.out.println(Thread.currentThread().getName() + ",hell AtomicBoolean");}}, "A").start();try {TimeUnit.MILLISECONDS.sleep(20);} catch (InterruptedException e) {e.printStackTrace();}new Thread(() -> {atomicStop.set(true);}, "B").start();}

通过Thread自带的api:insterrupt()方法和isInterrupted()方法

        在需要中断的线程中不断监听中断状态,一旦发生中断就执行相应的中断处理业务逻辑stop线程。

public static void main(String[] args) {Thread a= new Thread(() -> {while (true) {if (Thread.currentThread().isInterrupted()) {System.out.println(Thread.currentThread().getName() + ",isInterrupted 被设置成true,跳出当前循环");break;}System.out.println(Thread.currentThread().getName() + ",hell interrupt api");}}, "A");a.start();try {TimeUnit.MILLISECONDS.sleep(20);} catch (InterruptedException e) {e.printStackTrace();}new Thread(() -> {a.interrupt();}, "B").start();}

总结

        当对一个线程调用interrupt()方法时:

  1. 如果线程处于正常活动状态,那么会将该线程的中断标志位设置为true,仅此而已。被设置中断标识的线程将继续正常运行,不受影响。所以interrupt()方法并不能真正的中断线程,需要被调用方的线程自己配合好才行。
  2. 如果线程处于被阻塞状态(例如:sleep、wait、join等),在别的线程中调用interrupt方法,那么该线程将立即退出阻塞状态,并抛出一个InterruptedException异常,且会清除线程的中断状态。
  3. 如果线程已经中断、不活动将不会有任何影响。

http://www.bdqn1.cn/news/87.html

相关文章:

  • 北京怎么做网站推广网上写文章用什么软件
  • 广州环保网站建设成都网络营销公司排名
  • 上海公司查询网站一个企业该如何进行网络营销
  • 江西智能网站建设哪里有国外网站seo
  • 如何做网站产品经理电子商务seo是什么意思
  • 武威做网站专业seo培训学校
  • 黄金网站app软件下载安装百度基木鱼建站
  • 微信网页制作网站建设站长工具ip地址
  • 电子商务网站建设方案书自己的网站怎么在百度上面推广
  • 设计师服务平台鱼巴士有哪些网站张雷明履新河南省委常委
  • 爱南宁app下载二维码seo和sem的区别是什么
  • 建一个国外的网站西安seo关键词查询
  • 中文网站建设入门模板式自助建站
  • 怎么用php做网站华为手机软文范文300
  • 网页上传 网站百度快速收录3元一条
  • 哪个网站做五金冲压的哪些平台可以发布推广信息
  • 制作的网站怎么创建自己的网址
  • 企业网站后台管理系统seo 工具推荐
  • 一个网站要怎么做的吗搜索引擎营销成功的案例
  • 网站建设需要做的事情谷歌商店paypal官网
  • 新疆建设云网站营销型企业网站有哪些
  • 镇江网站制作网站建设营销推广公司
  • 鹤峰网站制作私人做网站的流程
  • 浙江网站建设企业上海网站推广系统
  • 东莞玩具加工东莞网站建设怎么做网络推广优化
  • 韩雪冬个人网站 北京北京seo排名公司
  • 网页设计与制作教程欧静美seo查询排名软件
  • 网站备案会检查空间淘宝推广怎么做
  • 寻找做网站的公司阿里巴巴关键词排名优化
  • 京东网站是刘强冬自己做的吗seo诊断书