网上面说原子性就是在执行过程中不会被打断的操作,也不会被线程切换,如果这样说的话,是不是在执行一个事物的时候,这个事务还没有执行完的时候也不能被其他线程抢占资源,事务不是也有原子性吗?
原子性是原子性,锁是锁,原子性是一切事务要么全部执行,要么全不被执行;
原子性一般是通过加锁来保证原子性的实现,但是还有一些原子类的存在可以做大不加锁也能实现数据的准确;
多个缘溪行操作放在一块可能就不是原子操作了;
1、原子性是指一组操作要么全成功,要么全失败
2、事务也是一样,以数据库事务原子性举例,当开启一个数据库事务,在这个事务内,所有的增删改操作必须全部成功或者全部失败,这样才能保证一致性
3、在Java中,很多JDK自带的类已经帮我们保证了原子性,例如JDK8之后的java.util.concurrent.atomic 包下的类,但是要注意,多个原子操作合并起来就不一定是原子操作了,这时候就需要我们通过加锁去保证
感觉回答的还够清晰就采纳下吧!
java通过synchronized后跟括号,括号里是变量,这样,一次只有一个线程进入该代码块.此时,线程获得的是成员锁.即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入.实现了锁+队列保证线程运行序列。