
并发和多线程
文章平均质量分 84
长江七号zzj
这个作者很懒,什么都没留下…
展开
-
Java锁常见面试题
在Java中的锁主要是用于保障线程在多并发的情况下数据的一致性。就是实现并发的原子性。不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁。出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续。如果没有外部干预,线程会一直阻塞无法往下执行,这些一直处于相互等待资源的线程就称为死锁线程。原创 2023-11-04 10:27:28 · 2307 阅读 · 0 评论 -
java并发编程中的四个关键字:ThreadLocal、Volatile、Synchronized和Atomic
在Java并发编程中,ThreadLocal、Volatile、Synchronized和Atomic关键字都是非常重要的工具。ThreadLocal用于创建线程本地变量,以避免线程安全问题;Volatile用于保证变量的可见性;Synchronized用于修饰方法或代码块,以实现线程安全;Atomic类用于提供原子性操作。原创 2023-11-03 19:47:54 · 715 阅读 · 0 评论 -
线程池详解
在scheduleAtFixedRate中,有时任务的执行时间大于延迟任务设定的时间间隔,那么当任务执行完之后才会开始执行下次任务,此时并不是以设定执行周期来执行任务。2. Executors.newCachedThreadPool:创建⼀个可缓存的线程池,若线程数超过处理所需,缓存⼀段时间后会回收,若线程数不够,则新建线程;1.Executors.newFixedThreadPool:创建⼀个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待;转载 2023-11-03 17:58:32 · 224 阅读 · 0 评论 -
ScheduledExecutorService:Java 线程池接口,指定时间或周期性执行任务
ScheduledExecutorService 是一个 Java 线程池接口,用于在指定时间或周期性地执行任务。它可以在指定的时间延迟后执行一次或周期性地执行任务,并且可以取消任务。1、常用于,例如定时备份数据、定时发送邮件、定时处理任务等。它提供了一种可靠的方式来调度重复的任务,并且可以处理异常情况。2、用于延迟执行任务,例如在应用程序启动后延迟一段时间再执行某些初始化操作。原创 2023-06-25 15:49:31 · 1648 阅读 · 0 评论 -
volatile关键字
参考:http://www.jianshu.com//p/e513bc7e48061、volatile的特性被volatile修饰的共享变量,就具有了以下两点特性:1 . 保证了不同线程对该变量操作的内存可见性;2 . 禁止指令重排序2、volatile的内存可见性和重排性这个聊起来可就多了,我还是从Java内存模型说起吧。Java虚拟机规范试图定义一种Jav转载 2017-12-17 19:28:47 · 216 阅读 · 0 评论 -
Synchronized与ReentrantLock的区别
转自:http://blog.youkuaiyun.com/chenchaofuck1/article/details/51045134 java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。相似点: 这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一转载 2017-12-15 22:55:26 · 314 阅读 · 0 评论 -
线程同步的方法
转自:https://www.cnblogs.com/XHJT/p/3897440.html一、什么是线程同步线程同步就是线程排队,避免线程“同步”二、为什么需要线程同步在java多线程并发控制时,当多个线程同时操作共享资源(共享、变量)时,会导致数据不准确,相互之间产生冲突。因此加入同步锁,在该线程没有完成操作之前,不能被其他线程调用,从而保证了该变量的唯一性和准确性。转载 2017-12-15 22:00:31 · 223 阅读 · 0 评论 -
Java并发编程-如何终止线程
转自:http://blog.youkuaiyun.com/chenchaofuck1/article/details/51721325我们知道使用stop()、suspend()等方法在终止与恢复线程有弊端,会造成线程不安全,那么问题来了,应该如何正确终止与恢复线程呢?这里可以使用两种方法:1.使用interrupt()中断方法。2.使用volatile boolean变量进行控转载 2017-12-15 23:09:52 · 247 阅读 · 0 评论 -
多线程创建及常见问题
java多线程实现方式主要有三种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。继承Thread类继承Thread类的方法尽管被我列为一种多线程实现原创 2017-12-15 09:59:52 · 351 阅读 · 0 评论 -
锁--自旋锁、阻塞锁、可重入锁、悲观锁、乐观锁、读写锁、偏向所、轻量级锁、重量级锁、锁膨胀、对象锁和类锁
参考:http://blog.youkuaiyun.com/a314773862/article/details/54095819自旋锁自旋锁可以使线程在没有取得锁的时候,不被挂起,而转去执行一个空循环,(即所谓的自旋,就是自己执行空循环),若在若干个空循环后,线程如果可以获得锁,则继续执行。若线程依然不能获得锁,才会被挂起。使用自旋锁后,线程被挂起的几率相对减少,线程执行的连贯性相对加强转载 2017-12-13 20:37:29 · 1470 阅读 · 0 评论