java多线程
RLGGL●木子弓长
这个作者很懒,什么都没留下…
展开
-
mybatis多线程如何保证事务统一
【代码】mybatis在springboot中多线程如何保证事务统一。原创 2023-02-23 16:37:11 · 667 阅读 · 0 评论 -
LinkedBlockingQueue 使用了 takeLock 和 putLock 两把锁为什么还能保证线程安全
之所以能保证线程安全是因为两点:1,private final AtomicInteger count = new AtomicInteger(); 保证了 存的数量和取得数量的安全性2,初始化的时候 last = head = new Node(null);下面详细说一下为什么:首先线程不安全是因为多个线程操作了一个共享变量导致。当count =0的时候 head = new Node(null);①先说put当调用put的时候,由于加了ReentrantLock 锁从而保证了put方法的原创 2022-04-27 22:42:40 · 1215 阅读 · 1 评论 -
线程的生命周期
1,操作系统层面:新建—就绪—运行—阻塞—死亡2,java层面:NEW–RUNNABLE—BLOCKED(synchronized)—WAITING(Object#wait(),join(),LockSupport#park())----TIMED_WAITING(Object#wait(long),join(long),)—TERMINATEDThread 类里面有一个内部枚举类State:public enum State { /** * Thread sta原创 2022-04-26 15:59:38 · 88 阅读 · 0 评论 -
Thread.currentThread().interrupt()和Thread.interrupted()和Thread.currentThread().isInterrupted()
Thread.interrupted() 可以返回当前标志位并使标志位为falseThread.currentThread().interrupt() 可以使标志位置为trueThread.currentThread().isInterrupted() 返回当前线程标志位如果线程中使用了sleep,wait,当调用thread.interrupt()的时候,会使当前线程中断标志位值为false,并触发异常InterruptedExceptionpublic static void main(St原创 2022-04-25 16:16:17 · 857 阅读 · 0 评论 -
测试是大端存储还是小端存储
1,创建unsafe工具类public class UnsafeUtil { public static Unsafe getUnsafe(){ try { Field field= Unsafe.class.getDeclaredField("theUnsafe"); field.setAccessible(true); return (Unsafe)field.get(null); }原创 2022-04-21 15:32:27 · 74 阅读 · 0 评论 -
HashMap 不安全问题 数据丢失 和 死循环
一 ,1.7HashMap 的不安全性1,数据丢失当调用put的时候最终会调用到这里假设有两个线程t1,t2 同时调用当t1调用到Entry<K,V> e = table[bucketIndex]; 时 时间片段用完了,线程挂起注:这个e就是新创建的Entry的next的值此时线程t2调用了put,put了一个新值最后table[bucketIndex] = t2的新值当t1再次拿到时间片段继续执行此时table[bucketIndex] = t1的新值而t1的新值的ne原创 2022-04-18 16:10:16 · 1105 阅读 · 0 评论 -
jdk8 list Stream groupingBy 分组之后 利用 reducing 求和 BigDecimal
1,建一个测试实体类package com.xiaoli.security.service;import lombok.Data;import java.math.BigDecimal;@Datapublic class TestStreamEnttiry { private String groupCode; private String groupName; private BigDecimal amt;}2,写测试代码进行测试package c原创 2021-08-22 18:19:04 · 2151 阅读 · 0 评论 -
测试AtomicReference在parallelStream中使用是线程安全的吗
首先 测试 list 在 parallelStream 中使用是否安全 ,上代码public static void main(String[] args) {// AtomicReference<Integer> integerAtomicReference = new AtomicReference<>(); List<Integer> objects = new ArrayList<>(); List&l原创 2021-08-06 13:00:20 · 950 阅读 · 0 评论