
Java并发编程
本专栏总结日常开发中遇到的java并发问题
爱写Bug的麦洛
与其等待未来,不如创造未来
展开
-
高并发,你真的理解透彻了吗?
转自: 公众号:IT人的职场进阶作者: 骆俊武支持原创,喜欢的关注上面的公众号高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。在过往的面试中,如果候选人做过高并发的项目,我通常会让对方谈谈对于高并发的理解,但是能系统性地回答好此问题的人并不多,大概分成这样几类:1、对数据化的指标没有概念不清楚选择什么样的指标来衡量高并发系统?分不清并..转载 2020-06-30 22:20:28 · 670 阅读 · 0 评论 -
Java并发编程(总目录)
一.Java多线程原创 2019-04-23 16:57:55 · 1817 阅读 · 2 评论 -
Java中各种锁的详解
导读今天和同事探讨多线程中的锁问题,发现我对这方面了解太少了,像我这么热爱学习的人(其实单身狗除了写博客也没其他可做的),决定梳理一下java中的各种锁一. synchronized在 JDK 1.6 之前,synchronized 是重量级锁,效率低下。从 JDK 1.6 开始,synchronized 做了很多优化,如偏向锁、轻量级锁、自旋锁、适应性自旋锁、锁消除、锁粗化等技术来...原创 2019-05-03 15:18:00 · 1462 阅读 · 0 评论 -
线程的生命周期详解
导读与人有生老病死一样,线程也同样要经历开始(等待)、运行、阻塞和结束四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。一.线程的状态线程可以分为5个状态:New(新建)Runnable(就绪)Running(运行)blocked(被阻塞)Dead(死亡)二.线程状态详解1.New(新建)当创建Thread类的一个实例(对象)时,此线程进入新建状态...原创 2019-05-03 15:17:37 · 476 阅读 · 0 评论 -
Java中的锁之重入锁:ReentrantLock
一.什么是重入锁顾名思义,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。原创 2019-05-03 15:17:18 · 669 阅读 · 0 评论 -
ThreadPoolExecutor线程池的实现原理
当向线程池提交一个任务之后,线程池是如何处理这个任务的呢?原创 2019-05-03 15:16:27 · 467 阅读 · 0 评论 -
ThreadPoolExecutor线程池的使用
一.线程池的创建我们可以通过ThreadPoolExecutor的构造函数来创建一个线程池。new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, milliseconds,runnableTaskQueue, handler);创建一个线程池时需要输入几个参数,如下。1)corePo...原创 2019-05-03 15:15:36 · 535 阅读 · 0 评论 -
为什么要使用ConcurrentHashMap
在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。一.线程不安全的HashMap在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。例如,执行以下代码会引起死循环。 final Has...原创 2019-05-03 15:16:45 · 904 阅读 · 0 评论 -
Java内存模型之happens-before
导读happens-before是JMM最核心的概念。对应Java程序员来说,理解happens-before是理解JMM(Java内存模型)的关键一.happens-before的简介由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?我们无法就所有场景来规定某个线程修改的变量何...原创 2019-05-03 15:17:47 · 515 阅读 · 0 评论 -
Java内存模型的抽象结构
一. 概述多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型之前,先简单介绍一下硬件的效率与一致性。二.硬件的效率与一致性由于计算机的存储设备与...原创 2019-05-03 15:18:12 · 803 阅读 · 0 评论 -
Java中的锁之Lock接口
一.Lock接口简介首先,我们一睹尊容:在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁。虽然它缺少了(通过synchronized块或者方法所提供的)隐式获取释放锁的便捷性,但是...原创 2019-05-03 10:56:05 · 441 阅读 · 0 评论 -
如何安全的终止线程
导读在日常开发中,我们如何终止一个线程,才是安全的?一.线程中断机制介绍JAVA中有3种方式可以终止正在运行的线程①线程正常退出,即run()方法执行完毕了②使用Thread类中的stop()方法强行终止线程。但stop()方法已经过期了,不推荐使用③使用中断机制那么,为什么stop()方法不推荐使用?因为stop()方法在终结一个线程时不会保证线程的资源正常释放,通常是没有...原创 2019-05-02 11:23:26 · 3847 阅读 · 5 评论 -
Java多线程的创建和启动
导读闲暇周末,怎能懒惰?乘此风和日丽之日,来死磕一下java多线程的创建和启动一.继承Thread类和重写run()方法public class MyThread extends Thread { private String name; public MyThread(String name) { this.name = name; } ...原创 2019-04-24 15:39:27 · 778 阅读 · 0 评论 -
Thread类相关的API介绍
导读Thread类作为java多线程的基类,那么你们了解与它相关的API吗?下面我们来一探究竟!一.准备工作在开始学习之前,我们先建一个类:ThreadApiTest,接下来我们将在此类中测试相关API;public class ThreadApiTest { public static class MyThread extends Thread{ pr...原创 2019-04-23 21:19:44 · 518 阅读 · 1 评论 -
Java多线程的概念和原理
一、操作系统中线程和进程的概念要理解线程,首先要理解并发的概念。并发是指在同一时间点,计算机可以同时执行多个任务。当前主流的操作系统,不管是Window系统,还是Linux系统,都是以多任务执行程序的。例如,我们可以在编写Java代码的同时听音乐、发送电子邮件等。在多任务系统中,每个独立执行的任务(应用程序)称为进程,多个任务可以并发执行。下图是Windows 7系统任务管理器中的进程,从...原创 2019-04-23 17:32:54 · 542 阅读 · 0 评论