发动态

没有新消息

更多内容

咔啡 广东/湖南农业大学
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。

660阅读

0赞

评论

0 条评论

暂无评论,快来写下您的评论

推荐阅读

总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。

508阅读
4赞
0评论

看到没,现在我们使用synchronized关键字加上锁,这样多个线程并发访问的时候就不会出现数据不一致等各种问题了。这种方式在单体结构下的确有用。目前的项目单体结构的很少,一般都是集群方式的。此时的synchronized就不再起作用了

798阅读
4赞
0评论

我们使用多个线程访问8080这个端口。因为没有加锁,此时肯定会出现并发问题。因此我们可能会想到,既然这个goods是一个共享资源,而且是多线程访问的,就立马能想到java中的各种锁了,最有名的就是synchronized。

891阅读
2赞
0评论

#360公司面试经验#【360公有云的golang岗位面经分享】 1.自我介绍 2.LRU算法相关,实现LRU算法,这个LRU算法用在生产环境中会出现什么问题; 3.如果十万个线程同时put,会出现什么问题,如何解决? 4.控制并发加读写锁还是互斥锁? 5.进程、线程、协程的区别是什么? 6.线程比协程消耗大的原因是什么?具体体现在哪些方面? 7.生产中哪些服务会用到进程、线程,为什么要这么做,这么做有什么好处? 8.乐观锁、悲观锁的适用情况是怎样的? 9.etcd、zookeeper、mysql、redis如何实现分布式锁,他们的优缺点分别是什么,如果是你,在生产中会用哪个? 10.zookeeper原理是什么,如何保持高可用?

2494阅读
3赞
1评论

服务直接的调用,比如在高并发情况下出现进程阻塞,导致当前线程不可用,全部线程阻塞,导致服务器雪崩。

739阅读
0赞
0评论

【准备参加校招,急求一线互联网公司的java常见面试题!】 一线互联网公司常见的java面试题有这些,掌握了的话基本上是稳了:比如synchronized和reentrantlock的相同点和不同点是什么。或者是ContextClassLoader(线程上下文类加载器)的作用是什么。或者是简诉如何结束一个一直运行的线程。threadlocal使用场景及问题,线程池从启动到工作的流程是怎样的,阻塞队列BlockingQueue take和poll的区别,blockingqueue如果存放了比较关键的数据,系统宕机应该如何处理等。

1247阅读
0赞
0评论

要解决幻读的问题有两种方案,一种是采用SERIALIZABLE 数据隔离级别,但是这种方案会强制把所有事务排序,来达到事务之间不互相冲突产生幻读的问题,当事务并发高的时候,很容易产生大量超时和锁竞争的情况,所以一般不太建议采用这种方案。另一种方案是采用在RR数据隔离级别下,手动给select操作加上x锁(排它锁)或者s锁(共享锁)。

858阅读
3赞
0评论

【java面试宝典为啥卖这么贵?真的有用吗?】 我面试有考到过在宝典里有的问题,真的非常有用,贵一点就贵点吧。 例如:什么是线程局部变量?(答案:线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java 提供 T人事eadLocal 类来支持线程局部变量,是一种实现线程安全的方式。但是在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长。任何线程局部变量一旦在工作完成后没有释放,Java 应用就存在内存泄露的风险。)

897阅读
0赞
0评论