Java
文章平均质量分 78
Mying_
这个作者很懒,什么都没留下…
展开
-
Synchronized理解与测试
Synchronized简单测试 1.synchronized关键子说明 对于操作系统进程来说,资源分配是很重要的一个问题,如果操作不当会造成多个进程抢占同一个资源,进而造成死锁,无限等待。线程同样无法避免这个问题,对于资源的控制与分配,Java提供了很多方法,Synchronzied是同步入门。 (注:避免进程死锁的四个方法: 互斥条件:每个资源同时只能有一个进程访问。 请求与保持:一个进程因...原创 2019-07-03 10:38:21 · 423 阅读 · 0 评论 -
java线程概述
java线程概述 1.进程 进程是指程序的一次动态执行过程,或者进程是正在执行的程序,它占用着CPU和存储资源。 2.并发 并发是指两个或多个事件在同一时间间隔内发生。一个CPU为什么可以同时运行那么多的程序?这是宏观上的并发。例如,在0–1ms内运行A进程,在1–2ms内运行B进程,在2–3ms运行B进程,其实就是在很短的时间内交替执行,看上去是一起执行的。 进程的基本状态(生命周期) (1)...原创 2019-06-28 16:07:21 · 162 阅读 · 0 评论 -
Java 线程sleep(),join(),yield()方法
Java 线程sleep(),join()方法 sleep()方法是让线程“睡眠”(即停下来等待)所指定的一段时间,在睡眠结束后,线程立即恢复执行,参与竞争运行资源。参数long millis指定毫秒数,int nanos指定纳秒数。 线程mThread1打印数字每打印一个数字休眠1s,mThread2打印字母每次休眠500ms package teach; class mThread1 ex...原创 2019-06-30 20:24:53 · 368 阅读 · 0 评论 -
Java线程之wait(),notifyAll(),notify()
1.概述 对于多线程来说,生产者—消费者模型是不可避免的问题。“宏观”来说生产者—消费者就是一边生产,一边消费,生产和消费同步。实际上是并发执行,一个线程执行一段时间。生产者生产完成后放入存储缓冲区,消费者从缓冲区拿走产品。那么问题来了: 同时去竞争缓冲区资源会不会造成死锁? 消费者如何知道缓冲区有没有资源? 生产者如何知道缓冲区资源有没有满? 对于问题1,Java的synchronized关...原创 2019-07-06 23:08:46 · 170 阅读 · 1 评论 -
JVM之内存区域划分
jvm之内存区域划分 1.概述 作为Java开发人员,对虚拟机是要了解一下的。虚拟机的作用是自动内存管理,不像C++一样让程序员去维护一个对象的生命开始到生命的结束。Java把内存的控制权全部交给了虚拟机,如果一旦出现内存泄露和溢出,怎么解决BUG ,了解虚拟机是有必要的。 2.运行时的数据区域 java虚拟机运行在操作系统的堆,Java程序运行在Java虚拟机上。上图绿色的区域是Java每一个...原创 2019-08-03 19:05:40 · 173 阅读 · 0 评论 -
JVM之内存回收策略(一)
JVM之内存回收策略 1.概述 jvm除了管理内存的分配还要担任起内存回收的任务。虚拟机栈、本地方法栈、程序计数器随着线程的诞生而诞生,也随着线程的结束而灭亡。但是堆和方法区是公有的。程序建立起来就一直存在,对于将不会使用的“垃圾”,如果不及时回收就造成内存的泄露和溢出。对于收集垃圾的任务,我们要解决三个问题: 哪些内存需要回收? 什么时候回收? 怎样回收? 2.哪些内存需要回收? 这个问题就...原创 2019-08-04 11:30:25 · 225 阅读 · 0 评论 -
JVM之内存回收策略(二)
JVM之内存回收策略(二) 1.概述 前面回答了内存应该回收哪些对象。还有两个问题没有解决,内存怎么回收?内存何时回收? 2.标记-清除算法 标记-清除算法是最基础的垃圾回收方法。它的基本思想是:把垃圾都标记出来,然后统一回收。 优点:实现简单。 缺点:在空间上面,标记-清除之后的内存是碎片化的,对于给大对象分配内存时内存不足,提前进行一次垃圾回收。在时间上,标记和清除的效率都很低。 3.复制算法...原创 2019-08-10 13:13:24 · 212 阅读 · 0 评论