上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 22 下一页
摘要: 1-volatile 当一个变量被 volatile 修饰的时候, 任何线程对其做的写操作都会被立即刷新到主内存中, 并且强制让那些缓存了该变量 的线程内的该变量数据清空, 需要从主内存中重新读取最新数据。 volatile 修饰的变量, 并不是让线程直接操作主内存获取数据, 还是需要将变量拷贝到工 阅读全文
posted @ 2021-12-12 09:39 姚狗蛋 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 1 什么是CAS 当多个线程同时使用CAS操作一个变量时,只有一个会胜出,并成功更新,其余均会失败, 但失败的线程并不会被 挂起,仅是被告知失败, 并且允许再次尝试,当然也允许失败的线程放弃操作。 CAS是一种原子操作。 2 ABA问题 所谓ABA问题,就是一个值原来是A,变成了B,又变回了A。 这 阅读全文
posted @ 2021-12-12 09:39 姚狗蛋 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 1 死锁来源 死锁最初由一个悲惨的故事说起,话说一群哲学家一起聚餐,然后在每个人的左边和右边分别放着一根筷子,而只有同时抓到两根筷子,才能正常吃饭,于是,不幸的故事发生了,每位哲学家都只抓到一根筷子,且都不愿意释放手中的筷子,于是,最终一桌的饭菜就这么浪费了。 不知道这个故事是谁发明的,但确实形象说 阅读全文
posted @ 2021-12-12 09:38 姚狗蛋 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 1-悲观锁 它总是认为每次访问共享资源时会发生冲突, 所以必须对每次数据操作加上 锁, 以保证临界区的程序同一时间只能有一个线程在执行。 1-1 使用场景 悲观锁多用于”写多读少“的环境,避免频繁失败和重试影响性 能。 2-乐观锁 乐观锁通常是使用一种称为CAS的技术来保证线程执行的安全性。 由于无 阅读全文
posted @ 2021-12-12 09:37 姚狗蛋 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 如果这个是面试官直接问你的问题,你会怎么回答? 一个专业的描述是, 当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象是线程安全的 那么我们如何做到线程安全? 实现线程安全的方式有多种,其中在源码中常见的方式是,采用sync 阅读全文
posted @ 2021-12-12 09:36 姚狗蛋 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 1-线程与进程 单核 CPU 一个时间片里只能执行一个进程。 但是因为它切换速度很快,所以我们感受不到,就造成了一种多进程的假 象。 (多核 CPU 那真的就是并行执行的了。) 并行才是真正意义上的同一时刻可以有多个任务同时执行 2 互斥锁 如果公共区域(堆内存)的数据,要被多个线程操作时, 为了确 阅读全文
posted @ 2021-12-12 09:35 姚狗蛋 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 1-继承thread class MyThread extends Thread{ @Override public void run() { System.out.println(Thread.currentThread().getName()+":running....."); } } publ 阅读全文
posted @ 2021-12-12 09:35 姚狗蛋 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 1-使用dubbo的好处 首先就是长链接, 不必 每次通信都要像http一样去3次握手什么的,减少了网络开销; 其次就是RPC框架一般都有注册中心,有丰富的监控管理; 发布、下线接口、动态扩展等,对调用方来说是无感知、统一 化的操作。 2-rpc远程调用 本地调用,就是你在家里洗碗 远程调用,就是你 阅读全文
posted @ 2021-12-12 09:32 姚狗蛋 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 1 Spring 中的 bean 是线程安全的吗? 如果是prototype:原型,每次创建一个新对象。 如果是单例,所有线程都共享一个单实例Bean,因此是存在资源的竞争。 如果单例Bean,是一个无状态Bean, 也就是线程中的操作不会对Bean的成员执行查询以外的操作, 那么这个单例Bean是 阅读全文
posted @ 2021-12-12 09:31 姚狗蛋 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 1 查询数据库不存在的对象,返回值 /** * 查询数据库不存在的对象 */ @Test public void selectSome2() { ArrayList<Integer> list = new ArrayList<>(); list.add(666); List<Person> peop 阅读全文
posted @ 2021-12-12 09:31 姚狗蛋 阅读(16) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 22 下一页