[英]accepted process / procedure for writing multithreaded code in java
在最近的一次采访中,有人问我命名一个特定的过程/过程,该过程/过程在Java中用于实现多线程并调试多线程问题。 尽管我了解一些如何编写好的多线程代码的良好实践,但是我不知道用于用Java编写多线程/并行程序的任何特定过程。
我进行了一些搜索,并阅读了一些博客和有关该主题的书籍,但是我遇到的最接近这种范例的是阿姆达尔定律,但这涉及多线程的性能方面。 是否有任何此类特定的过程/算法/规则集可用于用Java编写多线程应用程序
您对问题的措辞非常含糊。 在“ Java中用于实现多线程的技术”下,它们可能意味着同步原语。 Java为监视器提供synchronize
, wait
和notify
。 它将线程代码体实现为Runnable
。 其他语言和库使用不同的方法。
为了实现,Java库支持多线程设计模式。 同步队列支持生产者-消费者模式。 还有线程池。 有互斥锁和锁,线程可以互斥访问代码和数据。 等等。
JVM通过为调试器提供内置API来支持调试。
当然,调试多线程代码就像是矛盾的事情。 错误是不确定的,因此仅运行没有错误并不意味着它们已经消失。
因此,编写多线程代码的首要智慧是,通常必须先建立不变量并使用提供的工具(如同步原语)来强制执行它们,才能事先证明它是正确的。 添加断言来验证不变量是验证您的证明的一种方法,尽管很少保证它是正确的。
以下是创建安全的多线程Java代码的一些一般思路:
synchronize
仅允许单个线程访问它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.