知识点(一)

一.乐观锁和悲观锁

悲观锁:即线程获得的是独占锁,独占锁意味着其他线程只能依靠阻塞来等待线程释放锁。Java里面的同步原语synchronized关键字的实现采用的也是悲观锁。

乐观锁:每次不加锁而是假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止。乐观锁的实现机制是CAS操作(Compare and Swap 比较并交换)。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。

二. get和post的区别

(1)get被强制服务器支持。

(2)get请求不能代替post请求发送大量数据(因为浏览器对URL的长度有限制)。

(3)get请求发送的数据小,是幂等的,但get请求是不安全的。

(4)post请求不能被缓存,post请求相对于get请求是安全的,比get安全性高。

(5)以下情况时,请使用post请求:

        a.无法使用缓存文件

        b.向服务器发送大量数据

        c.发送包含未知字符的用户输入时,post比get稳定性更可靠。

三. wait和sleep的区别

(1)wait是Object类的方法,sleep是Thread类的方法。

(2)sleep()方法是Thread类放入静态方法,调用此方法会让当前线程暂停执行指令的时间,将CPU让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复,线程回到就绪状态。

(3)wait是Object类的方法,调用对象的wait()方法,会使线程释放对象的锁,进入等待池,只有调用对象的notify()方法或notifyAll()方法时,才能唤醒等待池中的线程,当线程重新获得对象锁时就可以回到就绪状态。

四.死锁

产生死锁的必要条件:

互斥条件,不可抢占条件,占有且等待条件,循环等待条件。

死锁预防:

打破互斥条件:允许进程同时访问某些资源。

打破不可抢占条件:允许进程强行从占有者那里夺取某些资源。

打破占有且等待条件:可以执行资源预先分配策略。

打破循环等待条件:实行资源有序分配策略。

五.进程间的通信

进程间通信方式:管道,命名管道,信号,信号量,消息队列,共享内存,内存映射,套接口。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值