`

Thread类中几个容易混淆的方法

阅读更多
摘自:http://manming.iteye.com/blog/343310

六.sleep(),wait(),join()区别

  在当前实例中调用sleep()方法,会使当前线程进入睡眠状态,一般调用slee()方法时都会传入一个毫秒数作为当前线程睡眠的时间,线程睡眠相应的毫秒后便会重新苏醒,当前线程处于睡眠状态时是不会释放当前对象锁的,其他线程无法获得当前对象的锁,只能等待,这是便会出现线程堵塞的现象.

  wait()方法与sleep()方法的作用其实是一样的,但它们也有不同的地方;wait()方法使当前线程进入等待状态,进入等待状态的线程会释放当前获得的对象锁,以供后续的线程使用.

  join()方法是等待指定的线程运行结束.当调用join()时,当前线程会等待它所连接的线程不再处于活动状态(既线程运行结束).

 

七.interrupted()与isInterrupted()区别

  这两个方法都是用来判断线程是否被中断,它们的区别就在于:

  interrupted()方法是一个静态方法,它是用来判断当前线程是否中断,然后返回一个布尔值;

  isInterrupted()方法必须在一个对象上执行,判断所指定的对象是否已经被中断.
分享到:
评论

相关推荐

    出现Exception in threadmain java.lang.NoClassDefFoundError的各种可能情况.doc

    在Java编程中,遇到“Exception in thread 'main' java.lang.NoClassDefFoundError”是一种常见的异常情况,这通常意味着JVM在运行时未能找到指定的类定义。此错误不同于ClassNotFoundException,后者发生在尝试加载...

    FindBugs的BUG分类

    方法名容易混淆。 * SQL:方法尝试访问一个Prepared Statement的0索引;方法尝试访问一个ResultSet的0索引。 * UwF:所有的write都把属性置成null,这样所有的读取都是null,这样这个属性是否有必要存在;或属性从...

    this的主要用法

    通过以上几个方面的详细介绍,我们可以看到`this`关键字在Java中扮演着非常重要的角色,它不仅可以帮助我们更好地管理类中的成员变量,还可以提高代码的可读性和可维护性。理解并熟练掌握`this`关键字的不同用法,...

    好用小巧的日志类源码

    首先,日志类在VB.NET中的实现通常是通过自定义类来完成的,这个类会包含一系列的方法,如记录信息、警告、错误等。在描述中提到的“小巧好用”,可能意味着这个日志类设计简洁,易于理解和使用,同时功能完备,能...

    ThreadLocal_ThreadLocal源码分析_源码.zip

    ThreadLocal的使用非常简单,主要包括以下几个步骤: 1. 创建ThreadLocal实例:首先,你需要创建一个ThreadLocal实例,这将作为线程局部变量的模板。 2. 设置值:使用`set(T value)`方法为当前线程设置值,这个值只...

    MFC局部线程存储

    理解MFC的局部线程存储,首先要了解以下几个核心概念: 1. **TLS全局索引**:每个线程存储的变量都需要一个唯一的标识,即TLS全局索引。在MFC中,可以通过`AfxGetThreadState()`函数获取当前线程的`CWinThread`对象...

    SCJP1.4陷阱总结

    笔记中的知识点可能包括以下几个方面: 1. **基本语法与数据类型**:SCJP考试会测试对Java基础语法的理解,如变量声明、数据类型(包括原始类型和引用类型)、运算符优先级等。笔记可能会特别强调容易混淆的点,...

    PMC CTC STACK 代码阅读与分析

    在新的package包更新后,MPC8247会启动几个PON(Passive Optical Network)控制任务,这些任务均命名为tOSSRV,这可能导致在识别具体任务实体时产生混淆。通过调试,我们找到了这些任务的对应关系: 1. Thread_...

    JavaJava+EE软件工程师就业求职手册.doc

    - **1.3 几个建议**:针对求职过程提出实用建议。 - **1.4 本章小结**:总结章节要点。 ##### 第二部分:Java试题篇 ##### 第2章 Java编程基础 - **2.1 Java概述和开发环境** - **2.1.1 理解Java**:介绍Java的...

    经典的问题

    Strings="a"+"b"+"c"内存创建了几个对象** - 字符串拼接时,如果没有使用`+`运算符,通常只会创建一个字符串对象。 **4. String类为什么复写Object类的equals方法** - 为了实现字符串内容的比较,而不是比较引用...

    服务级进程守护 C++ 有后台管理,方便控制多进程管理自启动

    在描述中提到的"ProGuard",实际上是一个Java代码的优化和混淆工具,主要用于Android开发,它可以去除未使用的类和方法,优化代码,以及对类和方法名进行混淆,提高应用的安全性。虽然这个工具与C++的进程守护不太...

    21天学通C++(高清中文第6版)

    在21天的学习计划中,读者将逐步接触并理解以下几个关键知识点: 1. **基础语法**:C++的基础语法与C语言相似,包括变量声明、数据类型、控制结构(如if-else,for,while循环)和函数。书中的前几章会引导读者熟悉...

    report 生成3

    在Java编程语言环境下,报告生成通常涉及到以下几个关键知识点: 1. **异常处理**:在修改BUG的过程中,Java的异常处理机制(try-catch-finally)起到了关键作用,确保程序在遇到错误时能够正常运行并给出反馈。 2...

    多线程学习教程

    在多线程编程中,有几个关键概念需要了解: 1. 并发与并行:并发是指在同一时间段内,多个任务看起来同时执行,而并行则是指它们真正的同时执行。在单核CPU上,多线程通过时间片轮转实现并发;在多核CPU上,可以...

    Parallel Programming with Python

    3. **Python并行编程库**:详细介绍几个常用的Python并行编程库,如`multiprocessing`、`threading`、`concurrent.futures`等。 4. **并发与并行的区别**:明确区分并发与并行的概念,并讨论它们在实际应用中的联系...

    android-framework-Android系统原理与开发

    Android Process的管理主要包括以下几个方面: - **Process优先级**:根据进程的状态和重要性,系统会为其分配不同的优先级,从而决定调度顺序。 - **Process生命周期**:从创建到销毁,进程经历了一系列的状态变化...

    Android四款小游戏源码分析_安卓源码.zip

    这些源码分析将涵盖以下几个核心领域: 1. **游戏架构设计**:源码将揭示如何构建一个基本的游戏框架,包括游戏循环、状态管理(如启动、暂停、恢复和结束状态)以及时间管理。学习游戏循环的实现,如Update和...

    新标准C++习题解答

    在C++新标准中,有几个重要的更新和扩展知识点: 1. **模板元编程**:新标准增强了模板的使用,引入了模板元编程,允许在编译时进行更复杂的计算和类型操作。这在编写高效库和模板时非常有用。 2. **右值引用**:...

    一个经典的C#版QQShield 聊天记录防盗器源码程序

    QQShield的工作原理可能涉及到以下几个关键知识点: 1. **进程管理**:程序通过在系统中创建一个新的进程来监视和保护QQ聊天记录。在C#中,可以使用System.Diagnostics命名空间中的Process类来创建、管理和控制进程...

Global site tag (gtag.js) - Google Analytics