并发编程[27]
【面试题61】对并发熟悉吗?谈谈对volatile的使用及其原理
一、volatile的作用 我们已经知道可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我
【面试题60】对并发熟悉吗?谈谈线程间的协作(wait/notify/sleep/yield/join)
一、线程的状态 Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态)。 New:新建状态,当线程创建完成时为新建状态,即new Thread(…),还没有调用start方法时,线程处于新建状态。
【面试题59】对并发熟悉吗?说说Synchronized及实现原理
一、Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。 Synchronized的作用主要有三个: 确保线程互斥的访问同步代码 保证共享变量的修改能够及时可见 有效解决重排序问题。 从语法上讲,Synchronized总共有
【面试题50】你说你熟悉并发编程,那么你说说Java锁有哪些种类,以及区别
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。 注:本文以总结为主,主要用作面试中的简单回答,深入研究可以逐个查询文档研究。 介绍的内容如下: 公平锁/非公平锁 可重入锁
ThreadLocal真的会造成内存泄漏吗?
ThreadLoca在并发场景中,应用非常多。那ThreadLocal是不是真的会造成内存泄漏?今天给大家做一个分享,个人见解,仅供参考。 1、ThreadLocal的基本原理 简单介绍一下ThreadLocal,在多线程并发访问同一个共享变量的情况下,如果不做同步控制的话,就可能会导致数据不一致的
Java并发常见面试题总结
什么是线程和进程? 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主
ArrayBlockingQueue 源码分析
本文转载来自JavaGuide ,如有侵权及时联系。 阻塞队列简介 阻塞队列的历史 Java 阻塞队列的历史可以追溯到 JDK1.5 版本,当时 Java 平台增加了 java.util.concurrent,即我们常说的 JUC 包,其中包含了各种并发流程控制工具、并发容器、原子类等。这其中自然也
CopyOnWriteArrayList源码分析
本文转载来自JavaGuide ,如有侵权及时联系。 CopyOnWriteArrayList 简介 在 JDK1.5 之前,如果想要使用并发安全的 List 只能选择 Vector。而 Vector 是一种老旧的集合,已经被淘汰。Vector 对于增删改查等方法基本都加了 synchronized
并发编程面试
1.前言 为了更好地掌握Java并发编程技术,建议从以下几个方面入手: 深入理解Java内存模型(JMM):JMM是Java并发编程的基础,它定义了线程间共享变量的可见性、原子性和有序性等规则。 熟练掌握多线程编程:了解线程的创建、启动、同步、通信等基本操作,以及如何使用锁来保证线程安全。 学习并发
LockSupport与线程中断
1、线程中断机制 阿里蚂蚁金服面试题interrupt、interrupted、isinterrupted 三个方法了解过吗?用在哪? 如何停止一个运行中的线程? 如何中断一个运行中的线程??