b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

分布式计算原理本文仅仅是私人MEMO,仅仅起到私人记录大纲之(10)

电脑杂谈  发布时间:2018-02-21 12:27:40  来源:网络整理

偏向锁

?????? 当一个线程访问同步快并获取锁时,会在对象头和栈帧中的锁记录存储偏向的线程id,以后此线程在进入和退出同步快时不需要花费CAS操作来加锁解锁,只需要测试一下对象头里是否存储着指向当前线程的偏向锁。

轻量级锁

?????? 轻量级锁认为竞争存在,但是竞争的程度很轻,一般两个线程对于同一个锁的操作都会错开,或者说稍微等待一下(自旋),另一个线程就会释放锁。

?????? 但是当自旋超过一定的次数,或者一个线程在持有锁,一个在自旋,又有第三个来访时,轻量级锁膨胀为重量级锁,重量级锁使除了拥有锁的线程以外的线程都阻塞,防止CPU空转。

死锁、活锁、饥饿

死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。

死锁的条件:

?????? 1、线程对资源访问互斥

?????? 2、线程访问资源后保持

?????? 3、线程获得资源不能被其他线程剥夺

?????? 4、环路等待条件 {p0,p1,p2,...pn},进程p0(或线程)等待p1占用的资源,p1等待p2占用的资源,pn等待p0占用的资源。

任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。

饥饿:是指如果线程T1占用了资源R,线程T2又请求封锁R,于是T2等待。T3也请求资源R,当T1释放了R上的封锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,

?????? 当T3释放了R上的封锁之后,系统又批准了T4的请求......,T2可能永远等待。

如何避免死锁:

?????? 加锁顺序(线程按照一定的顺序加锁)

?????? 加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁)

?????? 死锁检测

解决协同活锁的一种方案是调整重试机制。比如引入一些随机性。例如如果检测到冲突,那么就暂停随机的一定时间进行重试。这回大大减少碰撞的可能性。

活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。

Executors 类提供工厂方法用来创建不同类型的线程池。比如: newSingleThreadExecutor() 创建一个只有一个线程的线程池,newFixedThreadPool(int numOfThreads)来创建固定线程数的线程池,newCachedThreadPool()可以根据需要创建新的线程,但如果已有线程是空闲的会重用已有线程。

Executor则是一个接口?? 提供execute()方法用来提交任务 实现了这个接口的ExecutorService提供了submit()和execute()

UnsupportedOperationException

???? 使用了Java中未实现的方法抛出的异常

异常链

?????? 异常链”是Java中非常流行的异常处理概念,是指在进行一个异常处理时抛出了另外一个异常,由此产生了一个异常链条。

JDBC过程

?????? 1、Class.forName("com.mysql.jdbc.Driver");//加载驱动

?????? 2、Connection conn = DriverManager.getConnection(url,username,password);//获取连接


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-87102-10.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...