有个能写文章做任务的网站,室内装修设计网站推荐,进销存系统,邯郸大网站Lambdas lambdas lambdas。 这是您在谈论Java 8时所听到的所有信息。但这只是一部分。 Java 8具有许多新功能-有些是功能强大的新类和习惯用语#xff0c;而另一些则是从一开始就应该存在的功能。 我想介绍十个新功能#xff0c;我认为这些功能绝对是值得了解的小宝石。 您肯… Lambdas lambdas lambdas。 这是您在谈论Java 8时所听到的所有信息。但这只是一部分。 Java 8具有许多新功能-有些是功能强大的新类和习惯用语而另一些则是从一开始就应该存在的功能。 我想介绍十个新功能我认为这些功能绝对是值得了解的小宝石。 您肯定会尝试至少一两个所以让我们开始吧 默认方法 作为Java语言的新增功能您现在可以将方法主体添加到接口中称为默认方法 。 这些方法隐式添加到实现该接口的每个类中。 这使您可以在不破坏代码的情况下向现有库添加功能。 这绝对是一个加号。 不利的一面是这严重模糊了旨在用作合同的接口与用作其具体实现的类之间的界限。 在正确的地方这可能是使界面更智能避免重复并扩展库的一种优雅方法。 如果使用不当我们很快就会看到接口方法对此进行查询并将其转换为具体类型。 颤抖…… 。 流程终止 启动外部进程是您要做的事情之一半知道在进程崩溃挂起或消耗100CPU时您将再次调试它。 现在Process类提供了两种新方法来帮助您控制不规则的过程。 第一个是isAlive 使您可以轻松检查进程是否仍在启动中而不必等待它。 第二个功能更强大的是destroyForcfully 它使您可以强制终止已超时或不再需要的进程。 印花锁 现在这里有些令人兴奋的事情。 没有人喜欢同步代码。 这是降低应用程序吞吐量尤其是规模过小的可靠方法或者更糟糕的是导致应用程序挂起。 即使这样有时您还是别无选择。 有很多习惯用法可以同步对资源的多线程访问。 最受尊敬的产品之一是ReadWriteLock及其关联的实现。 这种习惯用法旨在通过允许多个线程消耗资源同时仅阻止操纵该线程的线程来减少争用。 从理论上讲听起来不错但实际上这种锁定是sloooow 尤其是在具有大量编写线程的情况下。 这太糟糕了以至于Java 8引入了一个全新的RWLock称为StampedLock 。 这种锁定不仅速度更快而且还提供了用于乐观锁定的强大API您可以以非常低的成本获得阅读器锁定希望在关键部分不会发生任何写操作。 在本节的最后您查询锁以查看在此期间是否发生过写入在这种情况下您可以决定是重试升级锁还是放弃。 此锁是一个功能强大的工具其本身值得一个完整的帖子。 我对这个新玩具感到兴奋不已-做得好 在这里补充阅读。 并发加法器 对于从事多线程应用程序的任何人来说这都是另一个小宝。 一个简单高效的新API用于从多个线程读取和写入计数器其方式比使用AtomicIntegers还要快。 真是太酷了 可选值 噢NullPointers所有Java开发人员的祸根。 也许是所有例外中最受欢迎的例外这种情况自时间开始以来就已经存在。 或至少是1965年 。 Java 8从Scala和Haskell借来的有一个名为Optional的新模板用于包装可能为空的引用。 绝不是结束空值的灵丹妙药而是让API设计人员在代码级别相对于文档表示可以返回空值或将空值传递给方法并且调用者应准备为它。 因此这仅适用于新的API前提是调用者不让引用转义包装程序而该引用程序可能会被不安全地取消引用。 我必须说我对此功能非常矛盾。 一方面空值仍然是一个巨大的问题因此我感谢在这方面所做的一切。 另一方面我相当怀疑这是否会成功。 这是因为采用Optional需要全公司范围内的持续努力并且几乎没有立即价值。 除非大力实施否则这将留在路边。 更多关于可选这里 。 注释任何内容 Java语言的另一个小改进是现在可以将注释添加到代码中的几乎所有内容中。 以前注释只能添加到类或方法声明之类的内容中。 使用Java 8时在将值转换为特定类型的值时甚至在分配新对象时都可以将注释添加到变量和参数声明中。 这是集中精力的一部分以及对Java doc工具和API的改进以使该语言对静态分析和检测工具例如FindBugs更加友好。 这是一个很好的功能但是很像Java 7中引入的invokeDynamic一样它的真正价值将取决于社区对其的处理方式。 溢流作业 现在这里有一系列方法 从一开始就应该成为核心库的一部分。 我最喜欢的一种爱好是当int超过2 ^ 32时调试数字溢出然后继续创建最讨厌最随机的错误即“我是如何得到这个奇怪的值的”。 再一次这里没有灵丹妙药而是一组对数字进行运算的函数这些数字在溢出时以比您的标准 / *运算符隐式溢出的方式宽容的方式少。 如果要由我决定我将把它作为JVM的默认模式并使用允许算术溢出的显式函数。 目录漫游 长期以来迭代目录树的内容一直是Google进行的那些搜索之一在这种情况下您可能应该使用Apache.FileUtils。 Java 8为Files类提供了一种全新的外观其中包含十种新方法。 我最喜欢的一个是walk 它创建一个惰性流对于大型文件系统很重要以迭代目录结构的内容。 强随机生成 如今不乏有关密码和密钥漏洞的讨论。 编程安全性是一项棘手的事务容易出错。 这就是为什么我喜欢新的SecureRandom。 getinstanceStrong方法自动选择最强大的JVM可用随机生成器。 这减少了您无法获得或默认使用弱生成器的机会这会使密钥和加密值更容易受到黑客攻击。 Date.toInstant Java 8引入了完整的新日期时间API 。 这是可以理解的因为现有的不是很好。 实际上Joda多年来一直是Java日期时间API的首选。 尽管如此即使有了新的API仍然存在一个大问题–使用旧的API仍然有大量的代码和库。 我们都知道他们会留下来。 所以你会怎么做 为此Java 8做得非常漂亮在Date类中添加了一个名为toInstant的新方法该方法将其转换为新的API。 即使使用使用旧Date API的代码并且在可预见的将来仍会继续使用这使您可以快速跳转到新API。 您是否认为缺少任何功能需要将其保留在此处或者不同意我们的分析 在评论部分让我们知道–这就是它的作用 翻译自: https://www.javacodegeeks.com/2014/05/10-features-in-java-8-you-havent-heard-of.html