avatar

nk

学习 思考 坚持 平静

  • 首页
  • 关于
Home 每天面试题:2024-01-15
文章

每天面试题:2024-01-15

Posted 2024-01-16 Updated 2024-01- 16
By nk
6~8 min read

每天面试题:2024-01-15

Q1:java 中如何停止一个线程

嗯,首先Java中线程是由操作系统进行调度的,操作系统在线程任务处理完之后,销毁工作线程,理论上不存在停止线程这一操作,但是在实际的应该场景中,我们在下面两种场景需要用的中断一个线程的逻辑

  1. 1. 因为业务逻辑需求,我们需要中断一个休眠中的线程

  2. 2. 我们使用多线程进行数据比对的时候,需要在一个 循环中中断比对线程

Java在最开始的时候提供了`#stop()` 方法,来停止一个运行中的线程,这个方式是不友好的中断方式,且现在Java官方已经把`#stop()`方法标记为已过时,因为这个方式中断线程会导致资源无法正确释放或者让工作线程的工作到一半就被停止。

我们一般是使用`#interrupt()`来把线程标记为一个中断的状态,这个状态需要我们在实现线程工作逻辑的时候,通过`#isInterrupted()·来感知这个中断信号,然后自行决定是否退出,或者如决定如何退出

Q2: 项目是使用 Dubbo 还是 OpenFeign,是使用 Http 还是使用 RPC

Dubbo是一个种基于RPC的分布式服务框架,它提供了服务注册和发现,以及跨进程的远程通信,如果我们项目要求高性能和高可靠性,复杂服务治理的能力则Dubbo是一个很好的选择

OpenFeign 是一个 声明式的 Http 客户端,如果我们在项目只是使用简单的Http 协议进行通信,并且希望通过将Java方法的调用映射成一个Http请求,那么 OpenFeign 是一个很好的选择

HTTP 是基于文本传输的应用层协议,RPC是一种远程过程调用协议。Http 协议主要用于跨互联网进行网络之间的通信,而RPC更多是跨进程,或者是跨机器之间的通信

Q3: 如何在Java中实现一个 无锁的数据结构

无锁数据结构可以让我们在多线程中在保证线程安全的情况下实现高性能存储,在Java中我们可以同 `java.util.current.atomic`包下面的 原子类来实现无锁情况下的线程安全控制,然后通过 `CAS`操作来实现数据变更的时候的数据安全

面试题的智慧
面试智慧
License:  CC BY 4.0
Share

Further Reading

Mar 27, 2024

每日面试题:2024-03-26

每日面试题: 2024-03-26 谈谈 CAS机制 CAS 是 compara and swap 的缩写,它是 JDK 底层 sum.misc.Unsafe的方法,此方法是 native方法 CAS 的 有三个核心参数 地址值 新值 期望的值 其操作流程就是当地址值对应的值是期望的值的时候,则将地

Mar 26, 2024

每日面试题: 2024-03-25

每日面试题:2024-03-25 ArrayList 和 LinkedList的区别 ArrayList 内部是使用数组中实现,其内存空间是连续的,其占用的内存相对较小,可能会产生内存碎片。其支持快速的随机访问。其时间复杂度是O(1) LinkedList 使用双向链表实现的,其内存空间不是连续的,

Mar 22, 2024

每日面试题: 2024-3-21

每日面试题: 2024-3-21 说说 你对 Cookie,Session,Token的理解 ChatGPT的回复 什么 JWT

OLDER

NEWER

每天面试题:2024-01-17

Recently Updated

  • 拥抱云原生:Dockerfile 的多阶段构建
  • 拥抱云原生:Dockerfile
  • 拥抱云原生:Docker文件系统
  • 拥抱云原生:Docker 指令小析
  • 拥抱云原生:起始

Trending Tags

Nginx 工作报告 云计算 云原生 Alpine Linux Docker Spring Linux 面试智慧

Contents

©2025 nk. Some rights reserved.

Using the Halo theme Chirpy