前言 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间或(虚空间).进程不依赖于线程而独立存在,一个进程中可以启动多个线程. 线程是指进程中的一个执行流程,一个进程中可以运行多个线程.线程总是属于某个进程,线程没有自己的虚拟地址空间,与进程内的其他线程一起共享分配给该进程的所有资源,统一进程内的线程共享一个堆内存,每个线程具有自己的栈内存."同时"执行是人的感觉,在线程之间实际上轮换执行. 同步与异步 同步:排队执行,效率低但是安全. 异步:同步执行,效…
进程与线程 进程是程序的一次动态执行过程,它需要经历从代码加载,代码执行到执行完毕的一个完整的过程,这个过程也是进程本身从产生,发展到最终消亡的过程.多进程操作系统能同时达运行多个进程(程序),由于 CPU 具备分时机制,所以每个进程都能循环获得自己的CPU 时间片.由于 CPU 执行速度非常快,使得所有程序好像是在同时运行一样. 多线程是实现并发机制的一种有效手段.进程和线程一样,都是实现并发的一个基本单位.线程是比进程更小的执行单位,线程是进程的基础之上进行进一步的划分.所谓多线程是指一个进…
大家好,这里是<齐姐聊数据结构>系列之大集合. 话不多说,直接上图: Java 集合,也称作容器,主要是由两大接口 (Interface) 派生出来的: Collection 和 Map 顾名思义,容器就是用来存放数据的. 那么这两大接口的不同之处在于: Collection 存放单一元素: Map 存放 key-value 键值对. 就是单身狗放 Collection 里面,couple 就放 Map 里.(所以你属于哪里? 学习这些集合框架,我认为有 4 个目标: 明确每个接口和类的对应关…
原文链接:https://mp.weixin.qq.com/s/c9tkrokcDQR375kiwCeV9w? 现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty.学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能.在前篇文章<NIO基础>中我们学习了NIO的相关理论知识,而在本篇中我们一起来学习一下Java NIO的实战知识. 一.概述 NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Se…
Java 设计模式   设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结 设计模式分为 23 种经典的模式,根据用途我们又可以分为三大类.分别是创建型模式.结构型模式和行为型模式 列举几种设计原则,这几种设计原则将贯通全文: 面向接口编程,而不是面向实现.这个尤为重要,也是优雅的.可扩展的代码的第一步,这就不需要多说了吧 职责单一原则.每个类都应该只有一个单一的功能,并且该功能应该由这个类完全封装起来 对修改关闭,对扩展开放.对修改关闭是说,我们辛辛苦苦加班写出来的代码,该实现的功能和…
注解 1.概念 注解:说明程序的.给计算机看的 注释:用文字描述程序的.给程序员看的 注解的定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明,注释. 2.作用 ①编写文档:通过代码里标识的注解生成文档[生成文档doc文档]: ​ shift+右键 -> 在此处打开Powershell窗口 -> 输入:javadoc .\…
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”. 很多人都对其中的一些概念不够明确,如同步.并发等等,让我们先建立一个数据字典,以免产生误会. 多线程:指的是这个程序(一个进程)运…
下了这本书<Java多线程编程指南-设计模式篇>, 还有另一本<JAVA多线程设计模式>,据说内容有重复,结合着看.…
转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问题来解释: 实现: 其实具体的实现类就是java.util.ServiceLoader这个类. 要想了解一个机制的原理,首先得知道它是怎么运行的,需要什么配置,才能运行起来.然后再分解来了解实现.对于技术实现也是一样,先看这个类是怎么实现的,先让它跑起来,看到效果.然后再讲原理.按照使用说明文档,应…
JVM内存模型你只要看这一篇就够了 我是一只孤傲的鱼鹰 让我们不厌其烦的从内存模型开始说起:作为一般人需要了解到的,JVM的内存区域可以被分为:线程栈,堆,静态方法区(实际上还有更多功能的区域,并且这里说的是JVM的内存区域,实际上Java程序还可以调用native方法使用直接内存).本文接下来就重点说说这三个区域. 1. 线程栈 简介 注意这个栈和数据结构中的stack有相似之处,但并不是用户态的.准确的讲它压入的每个栈帧(Stack Frame)是程序指令以及局部变量表,每个方法调用对应一个…