
JUC
文章平均质量分 70
刽子手发艺
天行健 君子以自强不息
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JUC——变量的线程安全实例分析
不是HashMap不是线程安全的、Hashtable是线程安全的。是线程安全的,String是不可变类 String S1 = ">>>";不安全 被final修饰但是,final指的是引用值不可变,但是日期的其他的属性比如年月日都是可以变的 final Date D2 = new Date();没有线程安全问题在第二个类中,调用方法创建的一直都是新的变量。线程是不安全的,都是单例的需要被共享,它里面的成员变量也是需要被共享的。答:子类就可能破环方法的行为,将线程安全的方法变成不安全的了。原创 2025-02-19 10:27:17 · 258 阅读 · 0 评论 -
JUC——变量的线程安全分析
/线程1,线程2 if(table.get("key")==null){ table.put("key",value);方法的修饰符是有意义的,在一定程度上可以保护线程安全问题,如果使用private,就限制了子类不能覆盖这个方法。局部变量:在mothod中new出来的list对象,每个线程的栈中都会创建自己的,目前还没有暴露给外部。m3方法中创建出了t2线程,并将在t1线程中创建的局部变量和t2线程共享了。String、Integer等都是不可变类,因为其内部的状态是不可变的,因此方法都是线程安全的。原创 2025-02-19 10:25:14 · 382 阅读 · 0 评论 -
JUC——Synchronized原理
如果在运行过程中,遇到了其他线程抢占锁,则持有偏向锁的线程会被挂起,JVM会消除它身上的偏向锁,将锁恢复到标准的轻量级锁。如果在运行过程中,同步锁只有一个线程访问,不存在多线程争用的情况,则线程是不需要触发同步的,这种情况下,就会给线程加一个偏向锁。锁竞争:如果多个线程轮流获取一个锁,但是每次获取锁的时候都很顺利,没有发生阻塞,那么就不存在锁竞争。如果在尝试加轻量级所的过程中,CAS操作无法成功,这时一种情况就是有其他线程为此对象加上了轻量级锁(有竞争),这时需要进行锁膨胀,将轻量级锁变为重量级锁。原创 2025-02-19 10:21:03 · 644 阅读 · 0 评论 -
JUC——Monitor的概念
每个Java对象都可以关联一个Monitor对象,如果使用synchronized给对象上锁(重量级)之后,synchronized 必须是进入同一个对象的monitor 才有上述的效果。该对象头的Mark Word中就被设置指向Monitor对象的指针地址。进入(BLOCKED)阻塞状态,但是唤醒的先后顺序由JDK底层决定。不加 synchronized的对象不会关联监视器,不遵从以上的规则。Monitor被翻译为 监视器 或 管程。原创 2025-02-19 10:15:48 · 173 阅读 · 0 评论 -
JUC——进程与线程
将CPU的时间片(Windows下时间片最小约为15毫秒)分给不同的线程使用,只是由于CPU在线程间(时间片很短)的切换非常快,人类感觉是同时运行的。多线程可以让方法执行变为异步的 比如说读取去磁盘文件时,假设读取花费了5秒种,如果没有线程调度机制,这5秒调用者什么都做不了,其代码都得暂停。多核CPU下,每个(core)都可以调度运行线程,这时候线程可以是。在windos中,进程仅仅最为线程的容器,进程是不活动的。线程作为最小的调度单位,进程作为资源分配的最小单位。单核CPU下,线程实际还是。原创 2025-02-19 10:06:50 · 900 阅读 · 0 评论