当前位置: 首页 > news >正文

企业建设高端网站的目的闸北区网站设计与制

企业建设高端网站的目的,闸北区网站设计与制,长沙企业网站排名优化,江苏备案网站名称最近更新的XX必备系列适合直接背答案#xff0c;不深究#xff0c;不喜勿喷。 你能说简单说一下synchronize吗#xff1f; 可别真简单一句话就说完了呀~ 参考回答#xff1a; synchronize是java中的关键字#xff0c;可以用来修饰实例方法、静态方法、还有代码块#xff… 最近更新的XX必备系列适合直接背答案不深究不喜勿喷。 你能说简单说一下synchronize吗 可别真简单一句话就说完了呀~ 参考回答 synchronize是java中的关键字可以用来修饰实例方法、静态方法、还有代码块主要有三种作用可以确保原子性、可见性、有序性原子性就是能够保证同一时刻有且只有一个线程在操作共享数据其他线程必须等该线程处理完数据后才能进行可见性就是当一个线程在修改共享数据时其他线程能够看到保证可见性volatile关键字也有这个功能有序性就是被synchronize锁住后的线程相当于单线程在单线程环境jvm的重排序是不会改变程序运行结果的可以防止重排序对多线程的影响。 补充我们来看一下上边这个回答其中有好几个部分可以继续延伸这里指的延伸就是面试官可以再继续问你的问题。 延伸一java内存模型的三大特性或者是说一下java内存模型或者是synchronize跟java内存模型有什么关系吗 首先补充为何会问到java内存模型因为Synchronize的三种作用其实就是java内存模型保证的再就是这个问题可能单独就蹦到考察java内存模型(JMM)上了。 1、什么是java内存模型java虚拟机规范中定义了java内存模型是用来屏蔽各种硬件和操作系统间内存的差异来实现java程序在各平台下并发一致性再就是java内存模型并不是真实存在的他只是一种抽象概念定义了线程和主内存之间的抽象关系也就是线程之间的共享变量存储在主内存中每个线程都有一个私有的本地内存本地内存存储了该线程共享变量的副本。 2、java内存模型的三大特性java内存模型有三大特性原子性、可见性、有序性。 原子性要么执行要么不执行主要使用互斥锁Synchronize或者lock来保证操作的原子性可见性在变量修改后将新值同步回主内存主要有两种实现方式一是volatile被volatile修饰的变量发生修改后会立即刷新到主内存二是使用Synchronize或者lock当一个变量unlock之前会将变量的修改刷新到主内存中有序性在Java内存模型中允许编译器和处理器对指令进行重排序但是重排序不会影响单线程的执行结果却会影响多线程并发执行的正确性。主要有两种方式确保有序性volatile 和 Synchronize 关键字volatile是通过添加内存屏障的方式来禁止指令重排序也就是重排序是不能把后面的指令放到内存屏障之前执行Synchronize是保证同一时刻有且只有一个线程执行同步代码类似于串联顺序执行代码。 延伸二你了解先行发生原则happens-before吗 为什么会出现先行发生原则从上边我们也能看到如果java内存模型中所有的有序性都要靠volatile和Synchronize来实现的话那么是非常繁琐的所以j就出现这么一个《先行发生原则》用来判断数据是否存在竞争、线程是否安全的重要依据。 参考回答 先行发生原则是java内存模型用来定义两个操作之间的偏序关系。比如说A操作先发生于B操作那么在B操作发生之前A操作修改了内存中的共享变量那么就会被B操作察觉到。 先行发生原则其中包含8种规则比如程序员次序规则volatile变量规则线程的启动、中止、中断等规则。 如果再问到能简单介绍一下你说的这几个规则吗一般不会问这么细的了解即可。 程序员次序规则在一个线程内在程序前面的操作先行发生于后面的操作。 volatile变量规则对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作。 线程启动规则Thread 对象的 start() 方法调用先行发生于此线程的每一个动作。 线程加入规则Thread 对象的结束先行发生于 join() 方法返回。 线程中断规则对线程 interrupt() 方法的调用先行发生于被中断线程的代码检测到中断事件的发生可以通过 interrupted() 方法检测到是否有中断发生。 延伸三volatile的作用volatile跟Synchronize的区别 补充如果上边不答到volatile可能会跳过这个问题但是多吹点说不定工资高点。 参考回答 volatile的作用volatile关键字主要作用是确保可见性跟有序性当一个共享变量被volatile修饰如果一个线程修改了这个共享变量那么其他线程就会立马可知强制刷新到主内存。 volatile跟Synchronize的区别 volatile只能作用域变量Synchronize可作用域变量、方法、类、同步代码块等volatile只能保证可见性和有序性不能保证原子性Synchronize三者都可以保证。volatile不会造成线程阻塞Synchronize可能会造成线程阻塞。在性能方面synchronized关键字是防止多个线程同时执行一段代码会影响程序执行效率而volatile关键字在某些情况下性能要优于synchronized。延伸四你能说说你刚刚提到的重排序吗 你是否想过重排序为什么会对多线程产生影响 参考回答 重排序是编译器和处理器为了优化程序性能而对指令进行重新排序的一种手段。重排序可以保证最终执行的结果是与程序顺序执行的结果一致并且只会对不存在数据依赖性的指令进行重排序重排序在单线程下对最终执行结果是没有影响的但是在多线程下就会存在问题。 举个例子 int a  1;int b  2;int c  a*b; 如上a与c之间存在数据依赖关系所以c不能排到A的前面同时b与c之间也存在数据依赖关系所以c也不能排到B的前面但是a与b之间是不存在数据依赖关系的所以a与b之间是可以进行重排序的但是无论怎么重排序都是不会影响到c的值。 但是在多线程中就不一样了如下代码 class Test{    /** 我是变量a **/    int a  0;    /** 我是用来标记变量a是否被写入 **/    boolean flag  false;    /** 我是写操作 **/    public void writer(){        a  1; /** 第1步 **/        flag  true; /** 第2步 **/    }    /** 我是读操作 **/    public void reader(){        if(flag){           /** 第3步 **/            int i  a * a;  /** 第4步 **/             ......        }    } } flag是一个变量用来表示变量a是否已被写入。这里假设有两个线程A和B A线程首先执行writer()方法随后线程B执行reader()方法。线程B在执行操作第4步的时候能否看到线程A在操作共享变量a的写入呢? 答案是在多线程的情况下不一定能看到 由于操作1和操作2没有数据依赖关系编译器和处理器可以对这两个操作重排序同样操作3和操作4没有数据依赖关系编译器和处理器也可以对这两个操作重排序。 具体细节可以看一下这篇文章了解一下重排序对多线程的影响https://blog.csdn.net/zhushuai1221/article/details/51491578 你能说一下Synchronize底层原理吗 参考回答 synchronized的底层原理是跟monitor有关也就是视图器锁每个对象都有一个关联的monitor当Synchronize获得monitor对象的所有权后会进行两个指令加锁指令monitorenter跟减锁指令monitorexit。 monitor里面有个计数器初始值是从0开始的。如果一个线程想要获取monitor的所有权就看看它的计数器是不是0如果是0的话那么就说明没人获取锁那么它就可以获取锁了然后将计数器1也就是执行monitorenter加锁指令monitorexit减锁指令是跟在程序执行结束和异常里的如果不是0的话就会陷入一个堵塞等待的过程直到为0等待结束。 最后 博客地址https://www.cgblog.com/niceyoo 如果觉得这篇文章有丶东西不放关注一下我关注是对我最大的鼓励~ 18年专科毕业后期间一度迷茫最近我创建了一个公众号用来记录自己的成长。
http://www.pierceye.com/news/637045/

相关文章:

  • 帮别人做网站哪里可以接单大型网站开发团队的美工需要什么工作经验和教育背景及薪酬
  • 网站开发工程师社交哔哩哔哩网页版入口2023在线观看
  • 凡客 网站设计wordpress也没
  • 深圳的网站建设公司排名电话外呼系统呼叫中心系统
  • 2022没封的网站免费的闵行区网站建设
  • 网站域名做入什么科目网络营销的主要内容是什么
  • 网站平面模板网站建设招标模板
  • 网站系统升级需要多久渐变网站
  • 网站建设数据库代码做煤的网站app
  • 做家电维修网站能接到单吗十大赚钱小程序
  • 手机网站表单页面制作小游戏网站审核怎么做
  • 浅谈高校门户网站建设的规范标准wordpress改变文章页宽度
  • 做网站必须得ipc支部网站建设
  • 受欢迎的医疗网站建设常德网站开发哪家好
  • 小区服务网站怎么做常州网站制作哪家好
  • 全国各大网站网站制度建设情况
  • 两学一做网站视频软文广告是什么意思
  • 网站等级保护如何做谷歌推广方案
  • 哪些网站做免费送东西的广告nas怎么做网站服务器
  • 网站开发用什么百度一下首页官网百度
  • 上海做saas平台网站的公司商城网站程序
  • 最好的免费建站网站做设计接私活的网站
  • 有帮忙做幻灯片的网站么济宁网站开发公司
  • 网站开发技术 主流官网铺设
  • 贵阳网站建设钟鼎网络江门网站建设套餐
  • 263企业邮箱自动回复seo技巧与技术
  • 昆明响应式网站怎么做最火的视频网站
  • 中山微信网站西安网站建设麦欧科技
  • 西平县住房城乡建设局网站网站备案 教程
  • 怎么用ps做简单网站推广码怎么输入