请说出你所知道的线程同步的方法.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
请说出你所知道的线程同步的方法

1. 请说出你所知道的线程同步的方法。 (1)wait():使一个线程处于等待状态,并且释放所持有的对象的lock。 (2)sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException异常。 (3)notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的 唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 (4)notityAll ():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁, 而是让它们竞争。 2. Error与Exception有什么区别? Error表示系统级的错误和程序不必处理的异常, Exception表示需要捕捉或者需要程序进行处理的异常。 3. 谈谈final, finally, finalize的区别。 (1)final—修饰符(关键字) ●如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此 一个类不能既被声明为 abstract的,又被声明为final的。 ●将变量或方法声明为final,可以保证它们在使用中不被改变。 ●被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改.被 声明为final的方法也同样只能使用,不能重载。 (3)finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相 匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 (4)finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除 出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这 个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之 前对这个对象调用的。 4. Collection 和 Collections的区别。  Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。  Collection是个java.util下的接口,它是各种集合结构的父接口。 5. 什么时候用assert。   断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 Assertionerror。它用于调试目的: assert(a 0); // throws an Assertionerror if a = 0 断言可以有两种形式: assert Expression1 ; assert Expression1 : Expression2 ; Expression1 应该总是产生一个布尔值。 Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。 断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:   javac -source 1.4 Test.java 要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。 要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。 6. Math.round(11.5)等於多少? Math.round(-11.5)等於多少?  Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11; 7. sleep() 和 wait() 有什么区别? 搞线程的最爱 (1)sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢 复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非 (a)醒来的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。 (2)wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执 行,被调对象进入等待状态,直到被唤醒或等待时间到。 8. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它 们有何区别? Set里的元素是不能重复的,那么用iterator()

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档