
多线程
Code神之手
人生辗转,起伏无常。活在当下。
1.01的365次方=37.78343433289>1;
0.99的365次方= 0.02551796445229<1
展开
-
项目开发之Spring多线程事务如何一起提交一起回滚(附代码),并发处理批量数据,实现多线程事务回滚,事务补偿
目录测试代码结果:封装的工具类:PS:测试已通过,部分数据操作,全部数据回滚,检查数据库无数据插入。测试代码@SpringBootTest@RunWith(SpringRunner.class)public class PlantTest { @Autowired private PlantService plantService; @Autowired private TransactionThreadPoolExecutor execut原创 2020-11-16 18:58:15 · 4360 阅读 · 6 评论 -
多线程下针对大批量数据时的业务场景,实现各线程的任务分配,快速处理业务数据
目录基于CountDownLatch基于回调函数具体代码:基于CountDownLatch//定义两计数器private CountDownLatch begin,end;begin设置为1,用于发布开始命令,如果需要开始,则begin.countdownend用于记录任务的执行情况。begin.countdown后,需end.await,等待任务都执行完。当begin.countdown开始执行任务后,在最后需end.countdown当end.countdown减原创 2020-11-16 12:15:09 · 699 阅读 · 0 评论 -
多线程之子线程死循环里加休眠或者加打印,会跳出死循环?问题记录待解决
问题描述: 子线程死循环里加休眠,会跳出死循环,执行while后面的语句? 子线程死循环里加打印,会跳出死循环,执行while后面的语句? 问题代码:package com.demo;import java.util.concurrent.TimeUnit;/** * @Description * @Author by mocar小师兄 * @Da...原创 2020-03-13 18:09:31 · 1256 阅读 · 2 评论 -
多线程之volatile关键字的使用
volatile一般被用于修饰共享资源,如果当前线程修改了volatile修饰的共享资源,则其他线程立马可见一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 禁止进行指令重排序。看一个栗子加强理解:package com...原创 2020-03-13 17:48:56 · 128 阅读 · 0 评论 -
多线程之LockSupper线程阻塞工具类
LockSupper介绍:所有的方法都是静态方法,可以让线程在任意位置阻塞,当然阻塞之后肯定得有唤醒的方法。源码:LockSupper不能被实例化!主要有两类方法:park 和 unpark。为什么叫park呢,park英文意思为停车。我们如果把Thread看成一辆车的话,park就是让车停下,unpark就是让车启动然后跑起来。调用了park方法后当前线程被阻塞...原创 2020-03-13 15:44:34 · 358 阅读 · 0 评论 -
多线程之SimpleFormatDate线程不安全的正确解决方案
package com.demo;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/**...原创 2020-03-13 14:23:46 · 260 阅读 · 0 评论 -
多线程之Thread.start和Thread.join
Thread.start;//是开启线程Thread.join;//邀请A线程先执行,本线程先暂停执行,等待(可设置等待时间)A线程执行完后,主线程再接着往下执行自我理解:当Thread.join后,即这个子线程会获得执行权,主线程会等这个子线程执行完再执行(如果join设置了时间,超过时间还没有执行完,主线程就不会再等了,主线程会继续执行)直白话:一个女的和男朋友一起约...原创 2020-03-13 11:52:25 · 2681 阅读 · 0 评论 -
多线程之Timer定时器实现用户线程和守护线程
Timer即定时器,他的构造方法如下:public Timer();public Timer(boolean isDaemon);//是否守护线程public Timer(String name);public Timer(String name, boolean isDaemon);定时器调度执行任务的方法,如下://常用的public void sche...原创 2020-03-13 10:00:57 · 763 阅读 · 0 评论 -
同步锁synchronized和ReentrantLock可重入锁(锁机制和线程通信)
synchronized:任何对象都内置了一个监听器,即可以作为锁,一般是this当前类。可以是修饰代码块,也可以是方法区ReentrantLock:可重入锁需要先声明,new一个ReentrantLock 对象:ReentrantLock lock = new ReentrantLock();通过lock.lock获取锁通过lock.unlock释放锁需要先声明,new一...原创 2019-12-26 15:29:14 · 339 阅读 · 0 评论 -
newCachedThreadPool,缓存池
Executors.newCachedThreadPool();无限制创建线程。package com.itcast.thread;import java.time.LocalDateTime;import java.util.PrimitiveIterator;import java.util.concurrent.ExecutorService;import java.u...原创 2019-11-29 15:29:01 · 314 阅读 · 0 评论 -
newFixedThreadPool,可控最大并发数线程池
多线程实现-可控最大并发数线程池(newFixedThreadPool)最多只会创建设置的线程数量,其他的任务处于等待队列。测试:package com.itcast.thread;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @Descri...原创 2019-11-29 14:26:25 · 2330 阅读 · 0 评论