![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 89
zuiaixixi@@@
这个作者很懒,什么都没留下…
展开
-
Volatile总结
Volatile总结1.Java内存模型java内存模型中 所有变量都存储在主内存(虚拟机内存)《主要指共享变量》,每个线程有着自己独有的工作内存,工作内存中保存了该线程使用的变量,这些变量来自主内存中变量的副本拷贝。线程对变量的所有操作都必须在工作内存中进行,不能直接读写主存中的变量,不同线程之间的工作内存时相互独立的,不可以访问其他线程的工作内存。在线程工作时,把需要的变量从主内存中拷贝到自己的工作内存[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFL3163G原创 2021-03-21 19:01:58 · 143 阅读 · 0 评论 -
Synchronized学习总结
Synchronized 学习总结1.用法A.synchronized 修饰普通的方法,此时锁的是当前实例的对象B.修饰静态方法public static synchronized methodC() {}//对类加锁,即对所有此类的对象加锁C.synchronized修饰代码块: 锁定的是括号内的对象public void synMethod0() {synchronized (this){//do something}}2.底层语义synchronized 修饰实例方法 其本质与原创 2021-03-21 11:40:45 · 187 阅读 · 0 评论 -
OutOfMemoryError
在jvm出现的场所:除了程序计数器以外都可能会出现设置jvm的参数1.java堆内存溢出public class test { public static void main(String args[]) { List<test> list =new ArrayList<test>(); int i=0; while(true) { list...原创 2019-04-06 10:32:31 · 95 阅读 · 0 评论 -
spring四---- (mvc的常用注解)
1 – @RequestMapping表单数据的提取 :此处是 jsp中的表单代码 ,需要在后端代码中获取输入的 name参数 <form action="/map"> name<input type="text" name ="name"><br/> <input type="submit"> </f...原创 2019-03-24 16:38:25 · 284 阅读 · 0 评论 -
java基础知识-String
1.String 为什么是final?final 修饰的对象是不可变的,是线程安全的,在多线程中可以不用考虑锁的问题效率更高,只用拷贝地址即可,不可变对象在所属实例创建时被提供,并且在整个对象的生命周期中都存在2.String的创建方式:String s=“sss” String s =new String"a" 第二种方式实际上是创建了 两个String 对象第一个是字符串a ....原创 2019-03-18 22:01:33 · 175 阅读 · 0 评论 -
CountDownLatch // CyclicBarrier
CountDownLatch是计数器, 线程完成一个就记一个, 就像 报数一样, 只不过是递减的。当减到0就会放行相当于游戏的加载,只有所有玩家都加载完成,游戏才能进入其中玩家相当于 分线程 , 整个游戏为main 线程import java.util.Random;import java.util.concurrent.CountDownLatch;/** * *//**...原创 2019-03-25 19:37:26 · 147 阅读 · 0 评论 -
java基础知识-(集合与线程 )
集合1、Map和ConcurrentHashMap的区别?后者线程安全2、hashMap内部具体如何实现的?Map本身为 key-value的entry 的集合1.7 数组加链表 --(冲突)1.8数组 加红黑树–(冲突)3、如果hashMap的key是一个自定义的类,怎么办?4、ArrayList和LinkedList的区别,如果一直在list的尾部添加元素,用哪个效率高?Ar...原创 2019-03-25 19:29:34 · 224 阅读 · 0 评论 -
java 多线程 基础 -----atomicinteger与 volatile
volatile :保证了可见性,当一个共享变量被 volatile修饰之后 它会保证修改的值会立刻被更新到 主存 (物理内存 ) 当 有其他 线程 需要读取 时,会从 内存中 读取新的值 但是 通过 lock 与 Synchronized 也可以实现可见性 它会 保证 同一时间 只会有一个 线程 获取锁 然后执行 同步代码并且 在释放锁之前 会将 对变量的修改 刷新到 主存之...原创 2019-03-21 11:41:53 · 319 阅读 · 0 评论 -
java基础---reentrantlock
reentrantlock 是可重入锁(重进入是指任意线程在获取到锁之后能够再次获取该锁而不会被锁阻塞),即一个线程 可以多次 获得该锁 (计数器 会加增加 释放时直到 计数器为 0 才表示 被释放完成 )同时 支持 使用 非公平/公平 锁 (默认为 非公平 但是可能会造成 饥饿效应)与 Synchronized的异同:1.它们都是加锁方式同步;2.都是重入锁;3. 阻塞式的同步;...原创 2019-03-20 15:33:32 · 121 阅读 · 0 评论 -
java基础 -- hashmap
1.数据结构:1.8之前 使用 链表加数组, 1.8之后 使用链表加数组(大于8之后 使用 红黑树 )key,vakue 作为 一对 entry 进行存储2. 线程性:非线程安全的 ,没有加锁,若需要在多线程中使用可以使用 conurrentHashmap 它是线程安全的3.put的工作原理:首先 使用put《key,vakue 》 作为一个entry实体 放入 ,然后 对key ...原创 2019-03-20 14:49:16 · 182 阅读 · 0 评论