深圳建设培训中心网站,百度付费推广有几种方式,开福区互动网站建设,上传wordpress程序目录1. 面试题一#xff1a;在 Java 程序中怎么保证多线程的运行安全#xff1f;1.1 追问一#xff1a;Java 线程同步的几种方法#xff1f;2. 面试题二#xff1a;JMM3. 面试题三#xff1a;计算机网络的各层协议及作用#xff1f;1. 面试题一#xff1a;在 Java 程序…
目录1. 面试题一在 Java 程序中怎么保证多线程的运行安全1.1 追问一Java 线程同步的几种方法2. 面试题二JMM3. 面试题三计算机网络的各层协议及作用1. 面试题一在 Java 程序中怎么保证多线程的运行安全
线程安全在三个方面体现
原子性提供互斥访问同⼀时刻只能有⼀个线程对数据进行操作atomicsynchronized可见性⼀个线程对主内存的修改可以及时地被其他线程看到synchronized、volatile有序性⼀个线程观察其他线程中的指令执行顺序由于指令重排序该观察结果⼀般杂乱无序happensbefore 原则。
补充
原子性指一个操作是不可中断的。即使是在多个线程一起执行的时候一个操作一旦开始就不会被其他线程干扰。可见性指当一个线程修改了某一个共享变量的值其他的线程是否能够立即知道这个修改。显然对于串行程序来说可见性问题是不存在的。因为我们在任何一个操作步骤中修改了某个变量那么在后续的步骤中读取这个变量一定是修改后的值。有序性指对于一个线程的执行代码我们习惯性的认为代码的执行是从前往后依次执行的。但是在并发时程序的执行可能会出现乱序。给人直观的感觉就是写在前面的代码可能会在后面执行。
1.1 追问一Java 线程同步的几种方法
使用 Synchronized 关键字wait 和 notify使用特殊域变量 volatile 实现线程同步使用可重⼊锁实现线程同步使用阻塞队列实现线程同步使用信号量 Semaphore。
2. 面试题二JMM
关于「JMM」的文章请看这位大佬的博文-【Java线程】Java内存模型总结
总结JMM通过控制主内存与每个线程的本地内存之间的交互来为 Java 程序员提供内存可见性保证。 在这里顺便复习一下计算机网络的知识吧。
3. 面试题三计算机网络的各层协议及作用 大家也可以看我的这篇文章写的也是非常详细了— OSI 7层模型讲解大白话 通俗易懂