- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在使用这个第 3 方 java 库,在文档中它说,不是线程安全的。
但是,我只是在 UI 之外的单独线程中运行它,并且它按预期运行良好(否则整个应用程序将锁定,直到一切完成)。
现在我在线程中运行非线程安全库,我能期待什么?
更新:
我可以为这个第三方库的每个新类实例运行每个单独的线程吗?或者这是否意味着我不能在每个类中使用多个线程。
Run in thread 1 : ThirdPartyProcessing tpp1 = new ThirdPartyProcessing();
Run in thread 2 : ThirdPartyProcessing tpp2 = new ThirdPartyProcessing();
Run in thread 3 : ThirdPartyProcessing tpp3 = new ThirdPartyProcessing();
最佳答案
So what can I expect now that I am running a non thread safe library in a thread?
如果您仅在一个线程中运行非线程安全的应用程序/库,那么您应该不会遇到任何问题。
非线程安全意味着“使用多个线程运行不安全”。因此,如果您使用多个线程来运行它或访问/更新其数据结构,那么可能会发生不好的事情。不能保证它们会在您每次运行时发生,并且(通常)不可能预测这些坏事将会是什么。然而,这种可能性总是存在的。
could I run each separate threads for each new class instances of this 3rd party library? or does this mean that I can't just use more than one thread per class.
这取决于为什么第 3 方库不是线程安全的。如果类的每个实例完全独立于其他实例(即,如果它们之间没有共享数据结构),那么这可以工作。另一方面,如果他们共享东西(例如通过静态),那么可能会出现问题。理论上,如果共享数据不可变,这些问题甚至可能存在。 (仅供引用,后一种情况的问题是“安全发布”的问题。)
底线是,除非您知道如何/为什么该库不是线程安全的,否则您尝试在不同线程中运行多个实例是在冒险。
关于Java:如果 java 库不是线程安全的,这是否意味着我不能在单独的线程中运行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199801/
我是一名优秀的程序员,十分优秀!