多线程学习
hehehehao1
这个作者很懒,什么都没留下…
展开
-
wait和notify区别
wait和notify区别wait和notify都是Object中的方法wait和notify执行前,线程都必须获得对象锁wait的作用是使当前线程进行等待notify的作用是通知其他等待当前线程的对象锁的线程原创 2020-12-13 23:01:22 · 690 阅读 · 0 评论 -
sleep和wait的区别
sleep和wait的区别waitsleep同步只能在同步上下文中调用wait方法,否则或抛出异常IllegalMonitorStateException异常不需要在同步方法或同步块中使用作用对象wait方法定义在Object类中,作用与对象本身sleep方法定义在java.lang.Thread中,作用与当前线程释放锁资源是否唤醒条件其他线程调用对象的notify()或者notifyAll()方法超时或者调用interrupt()方法体方法属原创 2020-12-13 22:39:18 · 69 阅读 · 0 评论 -
Object和Condition休眠唤醒的区别
Object和Condition休眠唤醒的区别Object.wait()必须在synchronized(同步锁)下使用。Object.wait()必须要通过notify()方法进行唤醒。Condition.await()必须和Lock(互斥锁、共享锁)配合使用。Condition.await()必须通过signal()方法进行唤醒。...原创 2020-12-13 21:15:53 · 138 阅读 · 0 评论 -
死锁预防
死锁预防预防死锁是设法至少破坏产生死锁的四个必要条件之一,严格的防止死锁的出现破坏”互斥“条件”互斥“条件是无法被破坏的。因此,在死锁里主要是破坏其他几个必要条件,而不去涉及破坏”互斥条件“。破坏”占有并等待“条件破坏”占有并等待“条件,就是在系统中不允许进程在已获得某种资源的情况下,申请其他资源。即要想出一个办法,阻止进程在持有资源的同时申请其他资源。方法一:一次性分配资源,即创建进程时,要求它申请所需的全部资金,系统或满足其他的所有要求,或者什么也不给它。方法二:要求每个进程提出新的原创 2020-12-12 20:54:40 · 351 阅读 · 0 评论 -
Synchronized和Lock的区别
Synchronized和Lock的区别synchronized是Java内置对象,在JVM层面,Lock是个Java类;synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;synchronized会自动释放锁(a线程执行完同步代码会释放锁;b线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁;用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程1阻原创 2020-12-12 19:47:26 · 71 阅读 · 0 评论 -
Runnable和Callable接口比较
Runnable和Callable接口比较相同点:两者都是接口;两者都可用来编写多线程程序;两者都需要调用Thread.start()启动线程;不同点实现Callable接口的线程能返回执行结果;而实现Runnable接口的方法不能返回结果;Callable接口的call()方法允许抛出异常;而Runnable接口的run()方法不允许抛出异常;实现Callable接口的线程可以调用Future.cancel取消执行,而实现Runnable接口的线程不能;注意点:== Calla原创 2020-12-12 17:40:46 · 88 阅读 · 0 评论 -
实现接口和继承Thread类的比较
实现接口和继承Thread类的比较接口更适合多个相同的程序代码的线程去共享同一个资源(提高代码复用性)。接口可以避免java中的单继承的局限性(实现接口可以创建多个对象)。接口代码可以被多个线程共享,代码和线程独立。线程池只能放入实现Runnable或Callable接口的线程,不能直接放入继承Thread的类。Java中,每次程序运行至少启动两个线程。一个是main线程,一个是垃圾收集线程...原创 2020-12-12 17:26:46 · 160 阅读 · 1 评论 -
Java多线程中synchronized与Lock的对比
synchronized与Lock的对比Lock是显式锁(手动开启和关闭锁,别忘记关闭锁) synchronized是隐式锁,出了作用域自动释放Lock只有代码块锁,synchronized有代码块锁和方法锁使用Lock锁,JVM将花费较少的时间来调度线程,性能更好。并且具有更好的扩展性(提供更多子类)优先使用顺序:Lock > 同步代码块(已经进入了方法体,分配了相应资源)> 同步方法(在方法体之外)...原创 2020-12-11 20:00:23 · 39 阅读 · 0 评论