java多线程
文章平均质量分 87
qq_45825178
这个作者很懒,什么都没留下…
展开
-
CAS原理
线程1和线程2开启时,根据对线程变量的操作,把主内存的值A复制到线程中的工作内存A线程1需要10s,线程2需要2s,假设线程2先修改则线程2中的工作内存的值A和主内存中的值A修改为B等待线程1的过程中,线程2又把自己内存中的值和主内存中的值修改为“A”此时线程1开启,发现线程1中的A与主内存中的“A”相同,按照CAS的方法把值修改为B简单的来说就是由于线程1和线程2存在时间差,线程2执行完之后又执行了一次改回来”原来的“值,线程1认为和自己的值相同,则又进行了操作。原创 2023-09-08 16:18:10 · 80 阅读 · 1 评论 -
@EnableAsync与@Async
在使用多线程的时候,往往需要创建Thread类,或者实现Runnable接口,如果要使用到线程池,我们还需要来创建Executors,在使用spring中,已经给我们做了很好的支持。只要要@EnableAsync就可以使用多线程。使用@Async就可以定义一个线程任务。通过spring给我们提供的ThreadPoolTaskExecutor就可以使用线程池。原创 2023-08-07 09:32:20 · 46 阅读 · 1 评论 -
java线程池
通过提供不同的 ThreadFactory,可以改变线程的名称、线程组、优先级、守护进程状态,等等。为了统一在创建线程时设置一些参数,如是否守护线程,线程一些特性等,如优先级。它是一个接口类,而且方法只有一个,就是创建一个线程。使用有界队列时队列大小需和线程池大小互相配合,线程池较小有界队列较大时可减少内存消耗,降低cpu使用率和上下文切换,但是可能会限制系统吞吐量。当线程数目超过核心线程数时用于保存任务的队列。多余的空闲线程的存活时间,当前池中线程数量超过corePoolSize时,原创 2023-08-05 13:38:10 · 62 阅读 · 2 评论