Java静态绑定与动态绑定

文章转自这里

1、当子类和父类存在同一个方法,子类重写了父类的方法,程序在运行时调用方法是调用父类的方法还是子类的重写方法呢?
2、当一个类中存在方法名相同但参数不同(重载)的方法,程序在执行的时候该如何辨别区分使用哪个方法呢?
在Java中我们使用静态绑定(static binding)和动态绑定(Dynamic binding)来解决,那么什么是绑定?什么是静态绑定?什么又是动态绑定?有什么区别?

阅读更多...

Synchronized和Lock对比

synchronized和lock是Java中提供的两种常用的锁机制,两者对比如下:

  1. 使用方法上
    • synchronize,是Java提供的一个关键字,可以加在方法上,也可以加在特定代码块中
    • lock,是Java提供的一个借口,常用的有ReentrantLock,通过调用lock()和unlock()获取锁和释放锁。通常在finally中添加unlock()防止死锁。
  2. 性能上
    • synchronized,JDK1.5中,synchronized是非常重量级的操作,但是从1.6开始,进行了优化,引入了锁升级机制,性能得到了较大提升。
    • lock,是乐观锁,通过CAS实现,在资源竞争激烈的情况下,使用lock性能会更好。
  3. 支持的功能上
    • synchronized,支持的功能简单,是公平锁,不支持中断
    • lock,支持更多的功能,包括公平、非公平锁,trylock、读写锁、condition等。
阅读更多...

Java中的Future

Future相关概念

定义

官放时这样描述Future接口的:

Future represents the result of an asynchronous computation. Methods are provided to check if the computation is complete, to wait for its completion, and to retrieve the result of the computation. The result can only be retrieved using method get when the computation has completed, blocking if necessary until it is ready. Cancellation is performed by the cancel method. Additional methods are provided to determine if the task completed normally or was cancelled. Once a computation has completed, the computation cannot be cancelled. If you would like to use a Future for the sake of cancellability but not provide a usable result, you can declare types of the form Future<?> and return null as a result of the underlying task.

阅读更多...
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信