多线程编程中经常会碰到多个线程访问一个变量的问题,那么我们先来熟悉下我们跟线程相关的修饰符nonatomic和atomic一搜索,会有很多文章;但是这些文章有一个共同的特点那就是nonatomic多线程不安全和atomic多线程安全如何来判断线程安全或不安全?对于小公司在大多数项目说的简单点安全就是不报错,不安全就是报错我写了个demo验证了下@property (strong, nonatomi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-24 16:51:05
                            
                                23阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            锁的种类互斥锁 自旋锁互斥锁:保证在任何时候,都只有一个线程访问对象。当获取锁操作失败时,线程会进入睡眠,等待锁释放时被唤醒;自旋锁:与互斥锁有点类似,只是自旋锁 不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环尝试,直到该自旋锁的保持者已经释放了锁;因为不会引起调用者睡眠,所以效率高于互斥锁;自旋锁缺点:调用者在未获得锁的情况下,一直运行--自旋,所以占用着CPU,如果不能            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-30 23:09:53
                            
                                192阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            MySQL数据库中的锁有:共享锁,表示对数据进行读操作排他锁,表示对数据进行写操作行锁,对一行记录加锁,只影响一条记录意向锁,为了在一个事务中揭示下一行将要被请求锁的类型1、共享锁(Shared Lock,也叫S锁)共享锁(S)表示对数据进行读操作。因此多个事务可以同时为一个对象加共享锁select * from ad_plan lock in share mode;2、排他锁(Exclusive            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-17 14:59:58
                            
                                27阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            补充一下,总结的两张图,5类锁,9种Lock:首先理解几个锁的概念:互斥锁(mutexlock)sleep-waiting:保证共享数据操作的完整性, 锁被占用的时候会休眠, 等待锁释放的时候会唤醒。在访问共享资源之前进行加锁,访问完成后解锁。加锁后,任何其他试图加锁的线程会被阻塞,直到当前线程解锁。解锁时,如果有1个以上的线程阻塞,那么所有该锁上的线程变为就绪状态,第一个就绪的加锁,其他的又进入            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-03 10:47:54
                            
                                41阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-25 10:54:56
                            
                                39阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、悲观锁和乐观锁悲观锁:对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。在java中,synchronized关键字和Lock的实现类都是悲观锁乐观锁:乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。如果这个数据没有被更新,当前            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-24 11:18:36
                            
                                169阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            **信号量的主要目的有两个:共享资源访问。 与任务同步。FreeRTOS中信号量分为如下几种: 1、二值信号量 2、计数型信号量 3、互斥信号量 4、递归互斥信号量**3.互斥信号量互斥信号量其实就是一个拥有优先级继承的二值信号量, 在同步的应用中(任务与任务或中断与任务之间的同步)二值信号量最适合。 互斥信号量适合用于那些需要互斥访问的应用中。 在互斥访问中互斥信号量相当于一个钥匙,当任务想要使            
                
         
            
            
            
            目录一、前言1.1、AQS1.1.1、信号量Semaphore1.1.2、计数器CountDownLatch1.2、CAS1.3、LockSupport二、手写实现2.1、获取释放锁的细节步骤2.2、代码实现 一、前言Jdk的锁常见有两种:synchronized关键字和Lock接口, Lock接口,最常用可重入锁ReentrantLock,底层实现是AQS+CAS+LockSupport。 这            
                
         
            
            
            
            在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:5 E- M/ l& @* f! f1.公平锁 / 非公平锁1 q# A% B1 u. M; ]1 w/ C" @2.可重入锁 / 不可重入锁: t3 C+ J) L8 g, H3.独享锁 / 共享锁7 `+ z. n/ y8 [3 O6 ]3 N4.互斥锁 / 读写锁/ `# L) x4            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-03 07:46:10
                            
                                104阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            目录1 乐观锁/悲观锁1.1 乐观锁1.2 悲观锁2 独享锁/共享锁3 互斥锁/读写锁4 可重入锁5 公平锁/非公平锁6 分段锁7 偏向锁/轻量级锁/重量级锁8 自旋锁1 乐观锁/悲观锁  乐观锁与悲观锁并不是特指某两种类型的锁,是人们定义出来的概念或思想,主要是指看待并发同步的角度。  乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-03 04:59:22
                            
                                270阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            锁(locking) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓 的“锁”,即给我们选定的目标数据上锁,使其无法被其他程序修            
                
         
            
            
            
            什么是锁?      在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制。锁旨在强制实施互斥排他、并发控制策略。在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:1.公平锁 / 非公平锁2.可重入锁 / 不可重入锁3.独享锁 / 共享锁4.互斥锁 / 读写            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-07 12:16:22
                            
                                79阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            六. Java 锁分类《Java并发编程:Lock》《java 锁 Lock接口详解》《[死磕 java同步系列之ReentrantLock源码解析(一)——公平锁、非公平锁]》)6.1 Java 锁的分类锁的类型目前感觉可以分成两大类:synchronized 关键字,以及 Lock, ReadWriteLock 锁以及 Reentrant 为前缀修饰的实现类 (ReentrantLock, R            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-02 01:44:53
                            
                                50阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-24 12:58:34
                            
                                83阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            包括全局锁、表锁(表锁、元数据锁、自增锁)、行锁(行锁、间隙锁、临键锁、共享锁、排他锁、意向锁、插入意向锁)一、全局锁(FUWRL)语句为:Flush tables with read lock   。可以对整个数据库实例加锁,让整个库处于只读状态。使用场景是全库逻辑备份时。还有一种全局锁方法是set global readonly=true(不建议用),原因:readonly            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-17 23:29:19
                            
                                472阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在并发访问情况下,很有可能出现不可重复读等等读现象。为了更好的应对高并发,封锁、时间戳、乐观并发控制(乐观锁)、悲观并发控制(悲观锁)都是并发控制采用的主要技术方式。锁分类①、按操作划分:DML锁,DDL锁②、按锁的粒度划分:表级锁、行级锁、页级锁③、按锁级别划分:共享锁、排他锁④、按加锁方式划分:自动锁、显示锁⑤、按使用方式划分:乐观锁、悲观锁乐观锁和悲观锁乐观并发控制和悲观并发控制是并发控制采            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-25 10:43:37
                            
                                28阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            乐观锁和悲观锁
不是具体的锁,是指看待并发同步的角度
悲观锁:对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中,synchronized关键字和Lock的实现类都是悲观锁。
乐观锁:乐观锁不是真的锁,而是一种实现。乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                            精选
                                                        
                            2024-09-25 23:53:55
                            
                                205阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            2.1.悲观锁带来的性能问题。我们试想一个场景:如一个金融系统,当某个操作员读取用户的数据,并在读出的用户数据的基础上进行修改时(如更改用户帐户余额),如果采用悲观锁机制,也就意味着整个操作过程中(从操作员读出数据、开始修改直至提交修改结果的全过程),数据库记录始终处于加锁状态,可以想见,如果面对几百上千个并发,这样的情况将导致怎样的后果?所以我们这个时候可以使用乐观锁。1.乐观锁:乐观锁的实现可            
                
         
            
            
            
            Java中的锁常见的锁有synchronized、volatile、偏向锁、轻量级锁、重量级锁1、synchronizedsynchronized是并发编程中接触的最基本的同步工具,是一种重量级锁,也是java内置的同步机制,首先我们知道synchronized提供了互斥性的语义和可见性,那么我们可以通过使用它来保证并发的安全。synchronized三种用法:synchronized与其他锁不同            
                
         
            
            
            
            首先介绍一些乐观锁与悲观锁:悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语synchronized关键字的实现也是悲观锁。乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别