• 并发与锁常问的题


    1.volatile关键字, Lock

    并发编程中:原子性问题,可见性问题,有序性问题。

    volatile关键字能保证可见性,字能禁止指令重排序,但是不能保证原子性。可见性只能保证每次读取的是最新的值,但是volatile没办法保证对变量的操作的原子性。在生成的会变语句中加入Lock关键字和内存屏障。

    Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题。用sychronized修饰的方法或者语句块在代码执行完之后锁自动释放,而用Lock需要我们手动释放锁

    2.MYSQL常用优化(sql优化,表结构优化等)

    SQL优化、表机构优化、索引优化、缓存参数优化

    3.java每改一点都需要重新编译打包部署,有没有更好的方法

    可以使用热加载

    4.进程间通信有哪几种方式?

    1)管道(Pipe),2)命名管道(named pipe),3)信号(Signal),4)消息(Message)队列,5)共享内存,6)内存映射(mapped memory),7)信号量(semaphore),8)套接口(Socket)

    5.Sychronized修饰静态方法,锁定类本身而不是实例,非静态方法锁定实例。

    6. 操作系统什么情况下会死锁?

    所谓死锁:是指多个进程在运行过程中因争夺资源而造成的一种僵局。产生的原因:竞争资源:当系统中多个进程使用共享资源,并且资源不足以满足需要,会引起进程对资源的竞争而产生死锁。进程间推进的顺序非法:请求和释放资源的顺序不当,也同样会导致产生进程死锁

    7.产生死锁的四个条件:

    1.互斥条件(进程独占资源)2.请求与保持(进程因请求资源而阻塞时,对已获得的资源保持不放) 3.不剥夺条件(进程已获得的资源,在末使用完之前,不能强行剥夺) 4.循环等待(若干进程之间形成一种头尾相接的循环等待资源关系)

    8. 如何理解分布式锁?

    由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。

    9. 线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?

    线程同步与否 跟 阻塞非阻塞没关系,同步是个过程,阻塞是线程的一种状态。多个线程操作共享变量时可能会出现竞争。这时需要同步来防止两个以上的线程同时进入临界区内,在这个过程中后进入临界区的线程将阻塞,等待先进入的线程走出临界区。

    10. 同步和异步有什么区别?

    同步和异步最大的区别就在于。一个需要等待,一个不需要等待。同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。

    11. 线程池

    根据系统自身的环境情况,有效的限制执行线程的数量,使得运行效果达到最佳。线程主要是通过控制执行的线程的数量,超出数量的线程排队等候,等待有任务执行完毕,再从队列最前面取出任务执行

    12. 如何调用 wait()方法?使用 if 块还是循环?为什么?

    wait() 方法应该在循环调用,因为当线程获取到 CPU 开始执行的时候,其他条件可能还没有满足,所以在处理前,循环检测条件是否满足会更好。

    wait(),notify()和notifyall()方法是java.lang.Object类为线程提供的用于实现线程间通信的同步控制方法。等待或者唤醒

    13. 实现线程的几种方法

    (1)继承Thread类,重写run函数

    (2)实现Runnable接口,重写run函数

    (3)实现Callable接口,重写call函数

    14. 什么是多线程环境下的伪共享(false sharing)?

    伪共享是多线程系统(每个处理器有自己的局部缓存)中一个众所周知的性能问题。缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。

  • 相关阅读:
    liferay常用api总结
    liferay增删改简单小练习
    MD5加密
    日期的工具类
    java生成随机六位数的验证码&随机生成十位数ValidCode码,用于邮件的验证&检查是不是符合为合法的中国的手机号码
    MyBaties
    网页的外观---CSS层叠样式表---03
    还在买鲜花送女神?手把手教你搭建3D立体相册网站,包女神稀饭
    Vue入门——常见指令及其详细代码示例
    什么是可串行化MVCC
  • 原文地址:https://www.cnblogs.com/CQqfjy/p/12365529.html
Copyright © 2020-2023  润新知