Java编程拾遗『synchronized原理』
上篇文章简单介绍了一下synchronized的使用,以及对象锁和类锁的概念,本篇文章就来介绍一下synchronized的底层原理。 上篇文章也提到,我们对synchronized的印象是重量级锁,使用效率低下,导致我们一般在使用sync...
上篇文章简单介绍了一下synchronized的使用,以及对象锁和类锁的概念,本篇文章就来介绍一下synchronized的底层原理。 上篇文章也提到,我们对synchronized的印象是重量级锁,使用效率低下,导致我们一般在使用sync...
从接触Java多线程第一刻起,我们就被告知使用多线程编程一定要注意线程安全问题。而一般的教材中都会首先给出解决线程安全问题的“万金油”——关键字synchronized,它可以保证同一时刻只有一个线程在访问其修饰的代码。但是同时,一般教程中...
上篇文章讲了一些关于并发编程的一些基本概念,也简单提到Java中线程的创建方式,本篇文章将详细介绍一下Java中线程使用的相关细节。 1. 创建线程 如果程序中只有一条执行流,程序从main方法的第一条语句逐条执行直到结束。如果在main线...
从本篇文章开始,我们一起来认识一下Java并发编程的相关细节。如果让你写一个多线程程序,相信绝大多数开发人员都能很轻松的实现。但是对于Java并发编程的一些细节,比如线程多个状态的流转、线程安全保证的原理、线程池的实现等等,综合考虑起来还是...
Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,也就是讲这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,有可能要求在JVM停止运行之后能够保存(持久化)指定的对象...
之前一篇文章讲述了Java中字节流的分类及简单用法,最后我们可以发现,Java中的字节流既可以用来处理二进制文件,也可以用来处理文本文件。但是字节流对于文本文件的处理是不太方便的,比如字节流的媒介是字节,但是文本文件的内容都是可显式地字符,...
生活中我们肯定知道代理商的概念,代理商代替厂家售卖其生产的商品,厂家“委托”代理商为其销售商品。通过代理商这种销售模式,普通消费者是不直接跟厂家打交道,但是却能获得厂家的商品服务,也就是说,“委托者”对普通消费者来说是不可见的。其次,同一厂...
上篇文章中简单介绍了文件和Java IO的概念,我们了解到Java中文件是作为一种特殊的IO设备处理的,并且Java中处理IO是通过流来操作的,流又可以细分为字节流和字符流。本篇文章就重点介绍一下Java IO中的一个重要模块——字节流。字...
从本文开始,讲述Java中文件和IO的相关知识。在做企业web开发时,文件操作相对涉及的比较少,在桌面系统开发中比较常见。正因如此,导致很多人对文本文件、二进制文件、字节流、字符流等概念性的东西都不能完全搞清楚。其实在我在写这篇文章之前,也...
上篇文章讲了EnumMap的实现,本篇文章按照惯例,介绍一下存储枚举类型集合Set类——EnumSet。但是跟之前HashSet和HashMap、TreeSet和TreeMap的关系不同,EnumSet不是依靠EnumMap实现的,甚至可以...