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

山东省住房建设厅网站首页网站设计建设合同是

山东省住房建设厅网站首页,网站设计建设合同是,wordpress唐杰,个人交养老保险文章目录 暂停中断**阻塞情况下中断,抛出异常后线程恢复非中断状态,即 interrupted false**调用Thread.interrupted() 方法后线程恢复非中断状态 暂停 Java中线程的暂停是调用 java.lang.Thread 类的 sleep 方法。该方法会使当前正在执行的线程暂停指定…

文章目录

    • 暂停
    • 中断
      • **阻塞情况下中断,抛出异常后线程恢复非中断状态,即 interrupted = false**
      • 调用Thread.interrupted() 方法后线程恢复非中断状态

暂停

Java中线程的暂停是调用 java.lang.Thread 类的 sleep 方法。该方法会使当前正在执行的线程暂停指定的一段时间,如果线程持有锁, sleep 方法结束前并不会释放该锁。

中断

java.lang.Thread类有一个 interrupt 方法,该方法直接对线程调用。当被interrupt的线程正在sleep或wait时,会抛出 InterruptedException 异常。
事实上, interrupt 方法只是改变目标线程的中断状态(interrupt status),而那些会抛出InterruptedException 异常的方法,如wait、sleep、join等,都是在方法内部不断地检查中断状态的值。

  • interrupt方法

Thread实例方法:必须由其它线程获取被调用线程的实例后,进行调用。实际上,只是改变了被调用线程的内部中断状态;
源码

    public void interrupt() {if (this != Thread.currentThread())checkAccess();synchronized (blockerLock) {Interruptible b = blocker;if (b != null) {interrupt0();           // Just to set the interrupt flagb.interrupt(this);return;}}interrupt0();}
  • Thread.interrupted方法
    Thread类方法:必须在当前执行线程内调用,该方法返回当前线程的内部中断状态,然后清除中断状态(置为false) ;
  • isInterrupted方法
    Thread实例方法:用来检查指定线程的中断状态。当线程为中断状态时,会返回true;否则返回false。

public class ThreadTest {public static void main(String[] args) throws InterruptedException {StopThread thread = new StopThread();thread.start();Thread.sleep(1000L);thread.interrupt();while (thread.isAlive()) { }thread.print();}private static class StopThread extends Thread {private int x = 0; private int y = 0;@Overridepublic void run() {synchronized (this) {++x;try {Thread.sleep(3000L);} catch (InterruptedException e) {e.printStackTrace();}++y;}}public void print() {System.out.println("x=" + x + " y=" + y);}}
}    

底层源码实现


// 核心 interrupt 方法
public void interrupt() {if (this != Thread.currentThread()) // 非本线程,需要检查权限checkAccess();synchronized (blockerLock) {Interruptible b = blocker;if (b != null) {interrupt0(); // 仅仅设置interrupt标志位b.interrupt(this); // 调用如 I/O 操作定义的中断方法return;}}interrupt0();
}
// 静态方法,这个方法有点坑,调用该方法调用后会清除中断状态。
public static boolean interrupted() {return currentThread().isInterrupted(true);
}
// 这个方法不会清除中断状态
public boolean isInterrupted() {return isInterrupted(false);
}
// 上面两个方法会调用这个本地方法,参数代表是否清除中断状态
private native boolean isInterrupted(boolean ClearInterrupted);

interrupt() :

  • interrupt 中断操作时,非自身打断需要先检测是否有中断权限,这由jvm的安全机制配置;
  • 如果线程处于sleep, wait, join 等状态,那么线程将立即退出被阻塞状态,并抛出一个InterruptedException异常;
  • 如果线程处于I/O阻塞状态,将会抛出ClosedByInterruptException(IOException的子类)异常;
  • 如果线程在Selector上被阻塞,select方法将立即返回;
  • 如果非以上情况,将直接标记 interrupt 状态;
    注意:interrupt 操作不会打断所有阻塞,只有上述阻塞情况才在jvm的打断范围内,如处于锁阻塞的线程,不会受 interrupt 中断;

阻塞情况下中断,抛出异常后线程恢复非中断状态,即 interrupted = false

public class ThreadTest {public static void main(String[] args) throws InterruptedException {Thread t = new Thread(new Task("mytask"));t.start();t.interrupt();}static class Task implements Runnable{String name;public Task(String name) {this.name = name;}@Overridepublic void run() {try {Thread.sleep(1000);} catch (InterruptedException e) {System.out.println("thread has been interrupt!");}System.out.println("isInterrupted: " +Thread.currentThread().isInterrupted());System.out.println("task " + name + " is over");}}
}

调用Thread.interrupted() 方法后线程恢复非中断状态


public class ThreadTest {public static void main(String[] args) throws InterruptedException {Thread t = new Thread(new Task("mytask"));t.start();t.interrupt();}static class Task implements Runnable{String name;public Task(String name) {this.name = name;}@Overridepublic void run() {System.out.println("first :" + Thread.interrupted());System.out.println("second:" + Thread.interrupted());System.out.println("task " + name + " is over");}}
}
http://www.yayakq.cn/news/213933/

相关文章:

  • 如何做网站的链接结构物理组简介 网站建设
  • seo的培训网站哪里好单页网站建设教程
  • 网站建站网站设计顺德网站建设价位
  • 现在1做啥网站流量大国内疫苗接种率
  • 80s网站建设工作室注册人力资源公司需要什么手续
  • 合肥百度网站排名优化中国印花图案设计网站
  • 学做网站要什么学历园林景观设计公司的培训手册模板
  • 清河网站建设费用怎样做一个网站平台
  • 做ipad的网站尺寸是多少钱兰州中川国际机场电话
  • o2o网站策划前端 网站开发 常见功能实现
  • 建设银行人力资源系统网站怎么进广西网站建设建议
  • 茂名平安建设网站设计制作软件
  • 西安定制网站龙岗网站设计公司价格
  • 成都网站建设公司盈利吗网站建设跟推广评价指标有什么关系
  • 中原免费网站建设企业网站制作哪家好
  • 园岭中小网站建设网站页面设计优化方案
  • 快速做彩平图得网站建设一个小说网站多少钱
  • 网站建设电子商务课总结和体会月季花app是哪家公司开发的
  • 套模板的网站多少钱在哪里找人做公司网站
  • 苏州门户网站天涯论坛网站建设
  • 网站如何做h5动态页面商贸城网站建设方案
  • 惠东做网站公司怎么注册微网站吗
  • 网站建立吸引人的策划活动网站做内嵌
  • 网站备案如何注销校园网站建设目标
  • 做网站需要api吗做的好的网站着陆页
  • 大连城市建设集团网站北京值得去的商场
  • 东莞网站设计定制开发那个网站教我做美食最好
  • 网站建设平台源码提供pc站转换手机网站
  • 课题组研究网站怎么做推广平台网站有哪些
  • 绿色 网站 源码如何建设阿里巴巴网站