Java笔试题集锦:sleep与wait的区别解析

需积分: 9 2 下载量 134 浏览量 更新于2024-07-17 收藏 877KB DOC 举报
"这篇资料汇集了100家大公司的Java笔试题目,涵盖了多方面的Java知识,包括线程管理、语法特性、继承与多态、Servlet处理方式、JDBC操作等核心概念。" 在Java编程中,理解线程管理是非常重要的。`sleep()` 和 `wait()` 是两个关键的线程控制方法,它们之间的区别在于: 1. `sleep()` 是 `Thread` 类的方法,它会让当前运行的线程暂停指定的时间,并不会释放任何锁。这样其他线程有机会获取CPU执行权,但当睡眠时间结束,该线程会自动恢复执行,无需其他线程唤醒。 2. `wait()` 是 `Object` 类的方法,它的使用需要在同步环境中(即在`synchronized`代码块或方法中)。调用 `wait()` 会使当前线程放弃对象锁,进入等待状态,直到其他线程调用同一对象的 `notify()` 或 `notifyAll()` 方法来唤醒它。这意味着线程不仅让出了CPU执行权,还放弃了对特定对象的锁定。 在Java考试题部分,我们看到了以下几个问题: 1. 抽象方法的正确描述是D,即声明抽象方法时不应该包含大括号 `{}`,因为抽象方法没有具体实现。 2. 题目中的代码会编译失败,因为试图在一个非静态方法中访问静态变量,这违反了Java的访问规则。正确答案是D。 3. 正确的说法是D,即实例方法可以直接调用本类的类方法,因为类方法属于类本身,不受实例化的影响。 4. 在继承和重写的问题中,虽然子类 `Sub` 重写了父类 `Super` 的 `getLength()` 方法,但父类对象 `sooper` 调用的仍然是父类的方法,因此输出是 "4,4"。 5. Servlet处理请求的方式是以线程的方式,也就是C选项。 6. JDBC中,表示数据库连接的对象是 `Connection`,对应选项B。 7. 用于调用存储过程的对象是 `CallableStatement`,对应选项C。 这些题目展示了Java编程中的基础概念,包括抽象方法的定义、静态与非静态成员的访问、继承与多态的运用、Servlet的运行机制以及JDBC的基本操作。掌握这些知识点对于Java开发者来说至关重要。在实际面试和笔试中,理解并能正确应用这些概念是评估候选人技能的重要标准。