1.ThreadLocal类
线程级别的局部变量,为每个使用该变量的线程提供一个独立的变量副本,每个线程修改副本时不影响其他线程对象的副本。
线程级别的局部变量,为每个使用该变量的线程提供一个独立的变量副本,每个线程修改副本时不影响其他线程对象的副本。
ThreadLocal实例通常作为静态私有字段出现在一个类中。
2.什么情况会抛出InvalidMonitorStateException异常
调用Object.wait()/Object.notify()/Object.notifyAll()中的任何一个方法时,如果当前线程没有获得该对象的锁,那么就会抛出 IllegalMonitorStateException 的异常
3.Object.wait()和Thread.sleep()
Object.wait(),在拥有该对象锁的情况下,释放该对象锁。一旦线程重新获取到该对象的锁时,方法返回。
Object.notify()
Thread.sleep():让出CPU分配的执行时间,但是不释放该线程拥有的锁。
4.静态方法上使用同步
如果一个静态方法被申明为synchronized,则等同于在这个方法上调用synchronized(类.class)。
2.什么情况会抛出InvalidMonitorStateException异常
调用Object.wait()/Object.notify()/Object.notifyAll()中的任何一个方法时,如果当前线程没有获得该对象的锁,那么就会抛出 IllegalMonitorStateException 的异常
3.Object.wait()和Thread.sleep()
Object.wait(),在拥有该对象锁的情况下,释放该对象锁。一旦线程重新获取到该对象的锁时,方法返回。
Object.notify()
Thread.sleep():让出CPU分配的执行时间,但是不释放该线程拥有的锁。
4.静态方法上使用同步
如果一个静态方法被申明为synchronized,则等同于在这个方法上调用synchronized(类.class)。
当一个线程进入同步静态方法中时,其他线程不能进入这个类的任何静态同步方法。
5.死锁
死锁就是两个或两个以上的线程被无限的阻塞,线程之间相互等待所需资源。
可能发生在以下情况:
当两个线程相互调用Thread.join();
当两个线程使用嵌套的同步块,一个线程占用了另外一个线程必须的锁,互相等待时被阻塞就有可能出现死锁。
6.ReentrantLock:
等待可中断:tryLock(long timeout,TimeUnit unit)当持有锁的线程长期不释放锁时,正在等待的线程可以选择放弃等待,改为处理其他事情。
公平锁:多个线程在等待同一个锁时,必须按照申请锁的事件顺序来依次获取锁;而非公平锁在被释放时,任何一个等待锁的线程都有机会获得锁。
Synchronized 中的锁是非公平锁,ReentrantLock 默认也是非公平锁。tryLock()打破公平性,如果该锁没有被另一个线程保持,立即返回true值,并将锁的保持计数器置1。
锁绑定多个条件:一个ReentrantLock对象可以同时绑定多个Condition对象。
7.线程状态:
新建 NEW:
运行 RUNNABLE:
无限期等待 WAITING:等得其他线程显式地唤醒。
没有设置 Timeout 参数的 Object.wait();没有设置 Timeout 参数的 Thread.wait()。
限期等待 TIMED_WAITING:在一定时间之后会由系统自动唤醒。
设置 Timeout 参数的 Object.wait();设置 Timeout 参数的 Thread.wait();Thread.sleep()方法。
阻塞 BLOCKED:等待获取一个排它锁,等待进入一个同步区域。
结束 TERMINATED:
5.死锁
死锁就是两个或两个以上的线程被无限的阻塞,线程之间相互等待所需资源。
可能发生在以下情况:
当两个线程相互调用Thread.join();
当两个线程使用嵌套的同步块,一个线程占用了另外一个线程必须的锁,互相等待时被阻塞就有可能出现死锁。
6.ReentrantLock:
等待可中断:tryLock(long timeout,TimeUnit unit)当持有锁的线程长期不释放锁时,正在等待的线程可以选择放弃等待,改为处理其他事情。
公平锁:多个线程在等待同一个锁时,必须按照申请锁的事件顺序来依次获取锁;而非公平锁在被释放时,任何一个等待锁的线程都有机会获得锁。
Synchronized 中的锁是非公平锁,ReentrantLock 默认也是非公平锁。tryLock()打破公平性,如果该锁没有被另一个线程保持,立即返回true值,并将锁的保持计数器置1。
锁绑定多个条件:一个ReentrantLock对象可以同时绑定多个Condition对象。
7.线程状态:
新建 NEW:
运行 RUNNABLE:
无限期等待 WAITING:等得其他线程显式地唤醒。
没有设置 Timeout 参数的 Object.wait();没有设置 Timeout 参数的 Thread.wait()。
限期等待 TIMED_WAITING:在一定时间之后会由系统自动唤醒。
设置 Timeout 参数的 Object.wait();设置 Timeout 参数的 Thread.wait();Thread.sleep()方法。
阻塞 BLOCKED:等待获取一个排它锁,等待进入一个同步区域。
结束 TERMINATED:
相关推荐
根据提供的文件信息,我们可以推断出这...综上所述,《Java程序员面试笔试宝典》这本书旨在全方位地帮助Java开发者们提高自己的技术水平和面试成功率,无论是对于初学者还是有一定工作经验的专业人士都非常有参考价值。
《Java程序员面试笔试宝典》是一本专门为寻求Java相关职位的程序员准备的参考资料,它涵盖了Java编程语言的基础、进阶以及面试中常见的问题和考点。这本书的高清版旨在提供清晰易读的学习体验,帮助读者更好地理解和...
香港的JAVA程序员面试笔试题目可能涵盖以下几个关键领域: 1. **基础语法**:面试可能会开始于一些基本的语法问题,如类、对象、封装、继承、多态等概念。此外,接口、抽象类的区别及其使用场景也是常见的面试题。 ...
它涵盖了JAVA语言的基础概念、进阶特性、多线程、网络编程、设计模式、数据结构与算法等多个方面,是提升JAVA技术素养和应对面试的有力工具。 【描述】:“自己整理的最全的 JAVA 常见 面试笔试 题,希望能得到你的...
以下是一些主要的Java面试笔试题相关的知识点,包括但不限于: 1. **基础语法**:理解基本数据类型、变量、运算符、流程控制(if、switch、for、while)、数组、字符串等。面试中可能会考察对Java内存模型的理解,...
多线程是Java中的高级主题,面试者需要了解线程的创建、同步、通信以及死锁的概念。synchronized关键字、volatile变量、ThreadLocal、wait()、notify()等方法的使用也是面试常考内容。 Java I/O系统是处理输入输出...
Java程序员在面试和笔试过程中,会遇到各种各样的问题,这些问题涵盖了Java语言的基础、进阶、多线程、网络编程、数据库操作、设计模式、框架应用等多个方面。本篇文章将根据提供的资料,深入探讨其中的一些关键知识...
* 用Java写一个多线程程序,掌握Java多线程编程的基础知识。 三、通信编程 * 用Java Socket编程,读服务器几个字符,再写入本地显示。 四、数据库查询 * 用Java实现数据库查询,掌握Java数据库查询的基础知识。 ...
### Java面试笔试题详解 #### 一、集合框架与线程安全性 - **线程安全类**:在Java集合框架中,存在一部分被设计成线程安全的类,这意味着它们能够在多线程环境下安全地使用,而不需要额外的同步措施。这类包括`...
这些知识点是Java程序员面试笔试题中的常见主题,深入理解和掌握这些内容,将有助于提升面试者的专业素养和应试能力。在准备面试时,不仅要理解这些知识点的概念,还要通过实际编码练习来增强应用能力。
4. **多线程**:Java提供了丰富的多线程支持,如Thread类、Runnable接口、同步机制(synchronized关键字、Lock锁、信号量等)、线程池(ExecutorService)等。 5. **IO流与NIO**:输入/输出流的理解,以及...
Java作为一门广泛使用的编程语言,其面试笔试题涵盖了众多领域,包括基础语法、面向对象、集合框架、多线程、异常处理、IO流、网络编程、数据库操作、设计模式等。以下将根据这些主题详细阐述相关知识点。 1. **...
Java基础、Java集合、多线程、JDBC、HTTP、JSP、Servlet、Struts面试题汇总(附答案).docx java工程师面试题大全-100%公司笔试题你都能碰到几个.docx Java开发工程师上机笔试题.docx Java开发求职面试题.docx Java...
5. **多线程**:Java提供了丰富的多线程支持,包括Thread类、Runnable接口、synchronized关键字、volatile、Lock接口等,以及线程通信(wait/notify,生产者消费者模式)。 6. **IO流**:Java的IO系统是处理输入...
Java程序员面试笔试宝典是何昊撰写的一本针对Java开发者面试和笔试准备的重要参考资料。这本书深入浅出地探讨了Java语言的关键特性和应用场景,旨在帮助求职者提升技能,顺利通过面试。以下是对Java语言特点的详细...
Java面试笔试大全是每个Java开发者在求职过程中必不可少的参考资料,它涵盖了从基础概念到高级特性的广泛知识领域。本文将深入解析Java面试中常见的重点和难点,帮助你为即将到来的面试做好充分准备。 1. **Java...
《Java程序员面试笔试宝典》是由何昊编著的一本针对Java程序员面试和笔试的必备参考资料。这本书深入浅出地涵盖了Java编程领域的诸多关键知识点,旨在帮助求职者在面试过程中表现出色,顺利通过技术关卡。以下将详细...
- **Runnable接口**:作为线程执行体,可以与其他类一起实现多线程。 - **同步机制**:synchronized关键字、wait()、notify()、notifyAll()方法,防止数据不一致。 - **线程池**:ExecutorService和...