所有实现类(例如[`HashMap`](//howtodoinjava.com/java/collections/how-hashmap-works-in-java/"How hashmap works in java"),`HashTable`,`TreeMap`或[`WeakHashMap`](https://docs.oracle.com/javase/7/docs/api/java/util/WeakHashMap.html"WeakHashMap"))都不同地实现了所有方法,因此与其他方法相比具有不同的功能。
我们都知道有两种方法可以在 Java 中创建线程。 如果您想了解有关它们比较的更多信息,请阅读[**如何在 Java**](//howtodoinjava.com/java/multi-threading/difference-between-implements-runnable-and-extends-thread-in-java/"Difference between “implements Runnable” and “extends Thread” in java")中创建线程。
我们都知道有两种方法可以在 Java 中创建线程。 如果您想了解有关它们比较的更多信息,请阅读[**如何在 Java**](//howtodoinjava.com/java/multi-threading/difference-between-implements-runnable-and-extends-thread-in-java/"Difference between “implements Runnable” and “extends Thread” in java")中创建线程。
@@ -143,7 +143,7 @@ public class TaskThree implements Runnable {
```
让我们创建上述任务的多可运行包装器。
让我们创建上述任务的`MultiRunnable`包装器。
```java
packagecom.howtodoinjava.demo.multiThread;
...
...
@@ -168,7 +168,7 @@ public class MultiRunnable implements Runnable {
```
现在可以在下面的程序中以这种方式执行上面的 multi runnable:
现在可以在下面的程序中以这种方式执行上面的`multi runnable`:
```java
packagecom.howtodoinjava.demo.multiThread;
...
...
@@ -214,8 +214,8 @@ class RejectedExecutionHandelerImpl implements RejectedExecutionHandler
## 3\. Java 执行器框架最佳实践
1. 始终针对静态分析工具(例如 [PMD](http://pmd.sourceforge.net/"pmd home page") 和 [FindBugs](http://findbugs.sourceforge.net/"findbugs home page"))运行 Java 代码,以查找更深层次的问题。 它们对于确定将来可能出现的丑陋情况非常有帮助。
2. 始终与高级人员进行交叉检查并更好地计划代码审查,以在执行过程中检测并可能在代码中出现[死锁或活动锁](https://en.wikipedia.org/wiki/Deadlock"deadlock and livelock")。 在大多数情况下,在应用程序中添加运行状况监视器以检查正在运行的任务的状态是一个很好的选择。
1. 始终针对静态分析工具(例如 [PMD](http://pmd.sourceforge.net/"pmd home page") 和 [FindBugs](http://findbugs.sourceforge.net/"findbugs home page"))运行 Java 代码,以查找更深层次的问题。 它们对于确定将来可能出现的丑陋情况非常有帮助。
2. 始终与高级人员进行交叉检查并更好地计划代码审查,以在执行过程中检测并可能在代码中出现[死锁或活锁](https://en.wikipedia.org/wiki/Deadlock"deadlock and livelock")。 在大多数情况下,在应用程序中添加运行状况监视器以检查正在运行的任务的状态是一个很好的选择。
Java 线程间通信在很长一段时间以来一直是热门的[面试问题](https://howtodoinjava.com/java-interview-questions/)。 在 JDK 1.5 版本中,[ExecutorService](https://howtodoinjava.com/java/multi-threading/java-executor-framework-tutorial-and-best-practices/) 和 [BlockingQueue](https://howtodoinjava.com/java/multi-threading/how-to-use-blockingqueue-and-threadpoolexecutor-in-java/) 为[带来了另一种更有效的实现方式](//howtodoinjava.com/java-5/how-to-use-blockingqueue-and-threadpoolexecutor-in-java/"How to use BlockingQueue and ThreadPoolExecutor in java"),但管道流方法也值得了解,在某些情况下可能有用。
Java 线程间通信在很长一段时间以来一直是热门的[面试问题](https://howtodoinjava.com/java-interview-questions/)。 在 JDK 1.5 版本中,[`ExecutorService`](https://howtodoinjava.com/java/multi-threading/java-executor-framework-tutorial-and-best-practices/)和[`BlockingQueue`](https://howtodoinjava.com/java/multi-threading/how-to-use-blockingqueue-and-threadpoolexecutor-in-java/)[带来了另一种更有效的实现方式](//howtodoinjava.com/java-5/how-to-use-blockingqueue-and-threadpoolexecutor-in-java/ "How to use BlockingQueue and ThreadPoolExecutor in java"),但管道流方法也值得了解,在某些情况下可能有用。
在我以前的文章中,我写了关于*[当属性文件](//howtodoinjava.com/java-7/auto-reload-of-configuration-when-any-change-happen/ "Auto reload of configuration when any change happen")* 中发生任何更改时自动重载配置的信息,我讨论了有关使用 **Java WatchService**刷新应用程序配置的信息。 由于配置是共享资源,并且通过[线程](https://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html"Java Thread class")进行访问时,总是有机会编写不正确的代码,而这可能导致死锁。
在我以前的文章中,我写了关于[当属性文件](//howtodoinjava.com/java-7/auto-reload-of-configuration-when-any-change-happen/"Auto reload of configuration when any change happen")中发生任何更改时自动重载配置的信息,我讨论了有关使用 Java `WatchService`刷新应用程序配置的信息。 由于配置是共享资源,并且通过[线程](https://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html"Java Thread class")进行访问时,总是有机会编写不正确的代码,而这可能导致死锁。
**集**代表**排序的**元素的集合。 集不允许重复的元素。 Set 接口不能保证以任何可预测的顺序返回元素。 尽管某些 Set 实现以其[自然顺序](https://howtodoinjava.com/java/collections/java-comparable-interface/)存储元素并保证此顺序。
***Consistent and reusable APIs** – This is any framework does. It provides a consistent set of classes methods which can be used to solve a similar set of problems over and over, without getting unpredictable results. Java collections framework also helps in solving common problems related to a group of objects – in consistent manner.
***性能** – Java 集合 API 是由一些最杰出的行业人士编写的,它们的性能在大多数情况下都是一流的。 Oracle 和非常热心的 Java 开发人员社区正在进行的开发工作有助于使它变得更好。
***Clean code** – These APIs have been written with all good [coding practices](https://howtodoinjava.com/java-best-practices/) and documented very well. They follow a certain standard across whole Java collection framework. It makes the programmer code look good and clean.
***干净的代码** – 这些 API 都是使用所有良好的[编码惯例](https://howtodoinjava.com/java-best-practices/)编写的,并且记录得很好。 它们在整个 Java 集合框架中遵循特定的标准。 它使程序员的代码看起来干净整洁。