- 博客(9)
- 收藏
- 关注
原创 高并发编程-06-可见性-volatile
1,volatile的作用 volatile是一个轻量级的线程同步机制。它的特性之一,是保证了变量在线程之间的可见性。 当然,还有我们之前说的,解决指令重排的问题 volatile保证了在多个线程之间是可见的,但不能保证原子性操作 当一个线程修改了变量的值之后,其他线程可以感知到 2,volatile vs synchronized synchronized
2018-01-13 17:06:20 182
原创 高并发编程-04-活跃性问题-死锁,活锁,饥饿
死锁,饥饿,活锁 1,死锁 多个线程,各自占对方的资源,都不愿意释放,从而造成死锁 工具:使用jconsole可以检测程序运行的死锁线程 2,饥饿 多个线程访问同一个同步资源,有些线程总是没有机会得到互斥锁,这种就叫做饥饿。 出现饥饿的三种情况 a,高优先级的线程吞噬了低优先级的线程的CPU时间片 理论上来说,线程优先级高的线程会比线程优先级低的线程
2018-01-13 17:04:47 317
原创 高并发编程-03-线程的安全性
之前,我们在前面已经介绍过了线程的安全性,本篇我们将继续来深挖这个问题,继续来探讨什么线程安全,原子性及加锁机制。 1,什么是线程安全? 线程安全,有两个关键词,“共享”和“可变”。 共享是指可以被多个线程同时访问; 可变是指变量的值在生命周期内是可以变化的; 一个对象是否需要线程安全的,取决于它是否被多个线程访问; 而如何保证一个对象的线程安全,则需要采用同步
2018-01-12 10:30:28 169
原创 高并发编程-02-并发编程存在的风险
多线程的高并发编程提高了我们的CPU利用率及简化开发模式,但是又同时给我们带来了风险,使用不当就会有风险,那到底有什么风险?我们来看看 1,线程的安全性问题 假设,我现在编写了一个程序,来保存系统的访问量,如何实现呢? 很简单,我可以设置一个全局变量,然后,每次用户访问一次系统,我就自增1,那么这个程序应该是这样写的,如下: public class System {
2018-01-11 09:21:38 304
原创 高并发编程-01-并发编程的发展历史
其实,在早期计算机并没有包含操作系统,这个时候,这个计算机只跑一个程序,这个程序独享计算机的所有资源,这个时候不存在什么并发问题,但是对计算机的资源来说,确实是一种浪费。 于是,操作系统出现了,操作系统改变了这种现状,让计算机可以运行多个程序,并且不同的程序占用独立的计算机资源,如内存,CPU等。 操作系统的出现,主要有以下几点原因: 1,资源利用率:可以在其他程序执行过程出现等待的
2018-01-11 09:18:25 364
原创 高并发编程-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 1141
原创 高并发编程专题-说明
大家好,并发编程是一个提升程序员level的关键专题,本专题会从理论结合实践逐步深入,尽量用通俗的语言和跑的通的程序来给大家讲解,重点每个地方都会形成一个闭环,让大家真正掌握高并发编程的核心要点,让我们一起来学习,感受技术的乐趣。 最后给大家一个经验之谈,要提升自己的技术逼格,一句话,“不断走出自己的舒适区” 技术说明:本专题会以java作为编程语言,要求大家具备javase的基础知识
2018-01-09 22:41:40 244
原创 JavaEE完整技术体系文章陆续上映!!!
特别申明,将利用工作业务时间,整理相关的技术文档,保证了文档的系统性和完整性为原则,同时也要保证专业性,以给大家提供最完整最专业的学习资料。 业余时间整理,期待大家的关注和支持,谢谢!
2016-08-23 20:22:58 390
原创 搭建Java开发环境,书写你的第一个Java程序
Java体系的划分: l JavaSE(Java Platform,Standard Edition),java平台标准版 l JavaME(Java Platform,Micro Edition),java平台微版 l JavaEE(Java Platform,Enterprise Edition),java平台企业版 那我们要学习JavaEE,JavaSe是必经之路,Ja
2016-08-23 10:30:04 336
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人