![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高并发编程
文章平均质量分 72
老黄分享
这个作者很懒,什么都没留下…
展开
-
高并发编程-01-并发编程的发展历史
其实,在早期计算机并没有包含操作系统,这个时候,这个计算机只跑一个程序,这个程序独享计算机的所有资源,这个时候不存在什么并发问题,但是对计算机的资源来说,确实是一种浪费。 于是,操作系统出现了,操作系统改变了这种现状,让计算机可以运行多个程序,并且不同的程序占用独立的计算机资源,如内存,CPU等。 操作系统的出现,主要有以下几点原因: 1,资源利用率:可以在其他程序执行过程出现等待的原创 2018-01-11 09:18:25 · 386 阅读 · 0 评论 -
高并发编程专题-说明
大家好,并发编程是一个提升程序员level的关键专题,本专题会从理论结合实践逐步深入,尽量用通俗的语言和跑的通的程序来给大家讲解,重点每个地方都会形成一个闭环,让大家真正掌握高并发编程的核心要点,让我们一起来学习,感受技术的乐趣。 最后给大家一个经验之谈,要提升自己的技术逼格,一句话,“不断走出自己的舒适区” 技术说明:本专题会以java作为编程语言,要求大家具备javase的基础知识原创 2018-01-09 22:41:40 · 249 阅读 · 0 评论 -
高并发编程-00-创建多线程的7种方式
1,继承Thread 主要掌握:线程的初始化,启动,中断的正确处理方式(interrupted) public class Demo1 { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start();原创 2018-01-09 22:43:22 · 1146 阅读 · 0 评论 -
高并发编程-02-并发编程存在的风险
多线程的高并发编程提高了我们的CPU利用率及简化开发模式,但是又同时给我们带来了风险,使用不当就会有风险,那到底有什么风险?我们来看看 1,线程的安全性问题 假设,我现在编写了一个程序,来保存系统的访问量,如何实现呢? 很简单,我可以设置一个全局变量,然后,每次用户访问一次系统,我就自增1,那么这个程序应该是这样写的,如下: public class System {原创 2018-01-11 09:21:38 · 320 阅读 · 0 评论 -
高并发编程-03-线程的安全性
之前,我们在前面已经介绍过了线程的安全性,本篇我们将继续来深挖这个问题,继续来探讨什么线程安全,原子性及加锁机制。 1,什么是线程安全? 线程安全,有两个关键词,“共享”和“可变”。 共享是指可以被多个线程同时访问; 可变是指变量的值在生命周期内是可以变化的; 一个对象是否需要线程安全的,取决于它是否被多个线程访问; 而如何保证一个对象的线程安全,则需要采用同步原创 2018-01-12 10:30:28 · 175 阅读 · 0 评论 -
高并发编程-04-活跃性问题-死锁,活锁,饥饿
死锁,饥饿,活锁 1,死锁 多个线程,各自占对方的资源,都不愿意释放,从而造成死锁 工具:使用jconsole可以检测程序运行的死锁线程 2,饥饿 多个线程访问同一个同步资源,有些线程总是没有机会得到互斥锁,这种就叫做饥饿。 出现饥饿的三种情况 a,高优先级的线程吞噬了低优先级的线程的CPU时间片 理论上来说,线程优先级高的线程会比线程优先级低的线程原创 2018-01-13 17:04:47 · 323 阅读 · 0 评论 -
高并发编程-06-可见性-volatile
1,volatile的作用 volatile是一个轻量级的线程同步机制。它的特性之一,是保证了变量在线程之间的可见性。 当然,还有我们之前说的,解决指令重排的问题 volatile保证了在多个线程之间是可见的,但不能保证原子性操作 当一个线程修改了变量的值之后,其他线程可以感知到 2,volatile vs synchronized synchronized原创 2018-01-13 17:06:20 · 190 阅读 · 0 评论