isInterrupted()和interrputed()方法的区别

isInterrupted方法是实例方法,interrupted方法是静态方法。

Thread.currentThread().isInterrupted()

Thread.interrupted()

首先说明:wait(),notify(),notifyAll()这些方法由java.lang.Object 类提供,而上面讲到的方法都是由java.lang.Thread 类提供(Thread类实现了Runnable 接口)。wait(),notify(),notifyAll()这三个方法用于协调多个线程对共享数据的存取,所以必须在synchronized 语句块内使用这三个方法。先看下面了例子:

示例12:

public class ThreadTest implements Runnable{

public static int shareVar = 0;

public synchronized void run(){

if(shareVar == 0){

for(int i=0;i<10;i++){

shareVar++ ;

if(shareVar == 5){

try{

this.wait();

}catch(Exception e){}

}} }

if(shareVar != 0){

System.out.print(Thread.currentThread().getName());

System.out.println(" shareVar = " + shareVar);

this.notify();

}

}

public static void main(String[] args){

Runnable r = new ThreadTest();

Thread t1 = new Thread(r,"t1");

Thread t2 = new Thread(r,"t2");

t1.start();

t2.start();

}}

运行结果:

t2 shareVar = 5

t1 shareVar = 10

t1线程最先执行。由于初始状态下shareVar 为0,t1 将使shareVar 连续加1,当shareVar的值为5 时,t1 调用wait()方法,t1 将处于休息状态,同时释放锁标志。这时t2 得到了锁标志开始执行,shareVar 的值已经变为5,所以t2 直接输出shareVar 的值,然后再调用notify() 方法唤醒t1。t1 接着上次休息前的进度继续执行,把shareVar 的值一直加到10,由于此刻shareVar 的值不为0,所以t1 将输出此刻shareVar的值,然后再调用notify()方法,由于此刻已经没有等待锁标志的线程,所以此调用语句不起任何作用。

区分interupt()和 notify().相关推荐

  1. Notification的使用以及Intent打开各种文件

    一:Notification的使用 详细链接http://blog.csdn.net/vipzjyno1/article/details/25248021 使用步骤: 流程模块: 第一步: 创建一个通 ...

  2. sleep()、yield()、join()、wait()/notify()、interupt()——多线程中常用的方法

    一.sleep()--线程休眠 线程休眠:指的是让线程暂缓执行一下,等到了预计时间之后再恢复执行. 线程休眠会交出CPU,让CPU去执行其他的任务.sleep() 方法不会释放锁,也就是说如果当前线程 ...

  3. Java线程中sleep()、wait()和notify()、suspend()和resume()、yield()、join()、interupt()的用法和区别

    从操作系统的角度讲,os会维护一个ready queue(就绪的线程对列).并在某一时刻CPU只为ready queue中位于队列头部的线程服务.但是当前正在被服务的线程可能觉得cpu的服务质量不够好 ...

  4. 理解notify()/notifyall()/interupt()对于线程里面wait方法的影响

    本文将通过三个程序例子帮助读者理解其中的原理: import java.text.SimpleDateFormat; import java.util.Date; import java.util.c ...

  5. Java线程的挂起与恢复 wait(), notify()方法介绍

    一, 什么是线程的挂起与恢复 从字面理解也很简单. 所谓线程挂起就是指暂停线程的执行(阻塞状态). 而恢复时就是让暂停的线程得以继续执行.(返回就绪状态) 二, 为何需要挂起和恢复线程. 我们来看1个 ...

  6. 条件队列大法好:wait和notify的基本语义

    条件队列是我们常用的轻量级同步机制,也被称为"wait+notify"机制.但很多刚刚接触并发的朋友可能会对wait和notify的语义和配合过程感到迷惑. 今天从join()方法 ...

  7. 为什么wait、notify、notifyAll方法定义在Object中而不是Thread类中

    多线程概述 Java是一个支持多线程的开发语言,多线程并发执行任务可以充分利用CPU资源,提高多任务并发执行效率(注意区分:多线程并不会加快任务的执行速度,而是可以充分利用多核CPU让线程轮流进行工作 ...

  8. java sleep唤醒_JAVA wait(), notify(),sleep详解(转)

    在JAVA中,是没有类似于PV操作.进程互斥等相干的方法的.JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的synchronized()方法类似于操作系统概念中的 ...

  9. ConcurrentProgramming:wait()和notify()和synchronized

    ConcurrentProgramming:wait()和notify()和synchronized 关键词 同一个对象,使用synchronized同步信息 wait和synchronized同时使 ...

最新文章

  1. 五分钟创建一个自己的NPM包
  2. 苹果雪豹操作系统正式版_iOS 12.3.1正式版“意外”推送,iPhone修复诸多问题!...
  3. nginx获取客户端请求的真实IP
  4. [APIO2013]机器人[搜索、斯坦纳树]
  5. Django-session操作
  6. Raspbian 源替换
  7. 2017省夏令营Day7
  8. asp静态设置html,ASP生成静态Html文件技术杂谈
  9. linux内核源码 进程,详解:Linux内核源代码
  10. kei4的安装教程(附下载地址)
  11. 《拆掉思维里的墙》读后感
  12. kindle中html笔记,Kindle教程:如何导出笔记
  13. IDEA不同颜色文件代表的意思
  14. 「MySQL」- 基础增删改查
  15. 【来龙去脉系列】机器学习入门必读
  16. GBase 8c产品高级特性介绍
  17. COSO流动性协议和跨链协议,能否解决流动性难题?
  18. 同构网络vs异构网络
  19. 【黑苹果教程】驱动ATI Radeon HD5450显卡
  20. NYOJ-110-剑客决斗

热门文章

  1. zippo蚀刻计算机键盘,发个技术贴,蚀刻DIY.
  2. 常见算法思路及技巧总结一
  3. lenovo g450 wireless network on ubuntu18.04
  4. vivo入驻华为测试鸿蒙,VIVO联动华为?官方宣传图出现华为智联,为鸿蒙合作埋下伏笔...
  5. K_A01_002 基于单片机驱动RGB模块颜色渐变显示
  6. .NET 跨平台框架Avalonia UI: 填坑指北(二):在Linux上跑起来了
  7. java filter response_ZuulFilter中设置Response的原理。
  8. 2016年年终CSDN博客总结
  9. dell服务器装centos7认不到硬盘_【Linux】DELL R720 服务器 安装 centos 7经历
  10. mysql修改初始密码