![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
2020Java面试题库,日更
Java面试题整理,最全最新,含建议答案。给自己2周时间,蜕变成Java大师。助你轻松入大厂。请理论与实际结合,效果更佳
kfyong
分享。快乐 资料、教程整理、分享
展开
-
2020-09-16
61、Java 中的 ReadWriteLock 是什么?读写锁是用来提升并发程序性能的锁分离技术的成果。62、volatile 变量和 atomic 变量有什么不同?Volatile 变量可以确保先行关系,即写操作会发生在后续的读操作之前, 但它并不能保证 原子性。例如用 volatile 修饰 count 变量那么 count++ 操作就不是原子性的。 而 AtomicInteger 类提供的 atomic 方法可以让这种操作具有原子性如 getAndIncrement()方法会原子性的进行原创 2020-09-16 09:52:46 · 78 阅读 · 0 评论 -
面试之 Java 并发编程(七) 高级java
51、Java 中的同步集合与并发集合有什么区别?同步集合与并发集合都为多线程和并发提供了合适的线程安全的集合, 不过并发集合的可 扩展性更高。在 Java1.5 之前程序员们只有同步集合来用且在多线程并发的时候会导致争 用, 阻碍了系统的扩展性。Java5 介绍了并发集合像 ConcurrentHashMap,不仅提供线程安全还用锁分离和内部分区等现代技术提高 了可扩展 性。52、什么是线程池? 为什么要使用它?创建线程要花费昂贵的资源和时间, 如果任务来了才创建线程那么响应时间会变 长, 而原创 2020-09-16 09:48:04 · 135 阅读 · 0 评论 -
面试之 Java 并发编程(六)
44、如何在两个线程间共享数据?在两个线程间共享变量即可实现共享。 一般来说, 共享变量要求变量本身是线程安全的, 然后在线程内使用的时候, 如果有 对共享变量的复合操作, 那么也得保证复合操作的线程安全性。45、Java 中 notify 和 notifyAll 有什么区别?notify() 方法不能唤醒某个具体的线程, 所以只有一个线程在等待的时候它才有用武之 地。而 notifyAll()唤醒所有线程并允许他们争夺锁确保了至少有一个线程能继续运行。46、为什么 wait, notify原创 2020-09-08 09:56:19 · 97 阅读 · 0 评论 -
面试之 Java 并发编程(五)
37、CopyOnWriteArrayList 可以用于什么应用场景?CopyOnWriteArrayList(免锁容器)的好处之一是当多个迭代器同时遍历和修改这个列表 时, 不会抛出 ConcurrentModificationException。在 CopyOnWriteArrayList 中,写入将导致创建整个底层数组的副本,而源数组将保留在原 地, 使得复制的数组在被修改时, 读取操作可以安全地执行。 1、由于写操作的时候, 需要拷贝数组, 会消耗内存, 如果原数组的内容比较多的情况 下,原创 2020-09-06 23:12:41 · 81 阅读 · 0 评论 -
面试之 Java 并发编程(四)
28、java 中有几种方法可以实现一个线程?继 承 Thread 类实现 Runnable 接口实现 Callable 接口, 需要实现的是 call() 方法29、如何停止一个正在运行的线程?使用共享变量的方式 在这种方式中, 之所以引入共享变量, 是因为该变量可以被多个执行相同任务的线程用 来作为是否中断的信号, 通知中断线程的执行。 使用 interrupt 方法终止线程 如果一个线程由于等待某些事件的发生而被阻塞, 又该怎样停止该线程呢? 这种情况经 常会发生, 比如当一个线程原创 2020-09-05 22:21:46 · 115 阅读 · 0 评论 -
面试之 Java 并发编程(三)
17、多线程同步和互斥有几种实现方法,都是什么线程同步是指线程之间所具有的一种制约关系, 一个线程的执行依赖另一个线程的消息, 当它没有得到另一个线程的消息时应等待, 直到消息到达时才被唤醒。线程互斥是指对 于共享的进程系统资源, 在各单个线程访问时的排它性。当有若干个线程都要使用某一共 享资源时, 任何时刻最多只允许一个线程去使用, 其它要使用该资源的线程必须等待, 直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步。 线程间的同步方法大体可分为两类: 用户模式和内核模式。顾名思义, 内核原创 2020-09-04 22:34:52 · 151 阅读 · 0 评论 -
面试之 Java 并发编程(二)
7、为什么使用Executor 框架?什么是Executor框架?我们知道线程池就是线程的集合,线程池集中管理线程,以实现线程的重用,降低资源消耗,提高响应速度等。线程用于执行异步任务,单个的线程既是工作单元也是执行机制,从JDK1.5开始,为了把工作单元与执行机制分离开,Executor框架诞生了,他是一个用于统一创建与运行的接口。Executor框架实现的就是线程池的功能。每次执行任务创建线程 new Thread()比较消耗性能, 创建一个线程是比较耗时、耗资源 的。 调用 new Th.原创 2020-09-03 22:38:51 · 109 阅读 · 0 评论 -
面试之 Java 并发编程(一)
1、在java 中守护线程和本地线程区别? java 中的线程分为两种: 守护线程( Daemon) 和用户线程( User)。学过Unix开发但是没有细致学习Java的同学们会疑惑了,操作系统里面是没有所谓的守护线程的概念,只有守护进程一说,但是Java语言机制是构建在JVM的基础之上的,意思是Java平台把操作系统的底层给屏蔽起来,所以它可以在它自己的虚拟的平台里面构造出对自己有利的机制,而语言或者说平台的设计者多多少少是收到Unix思想的影响任何线程都可以设置为守护线程和用户线程,通过方法 T原创 2020-09-02 23:01:22 · 82 阅读 · 0 评论