And*_*NER 6 java multithreading visualization
当使用线程时,我有时将它们可视化为将空间上下文中的对象之间的三维或更多维互连编织在一起.这不是一般用例场景,但对于我所做的事情,它是一种有用的思考方式.
Chr*_*est 14
是否有任何API使用哪种辅助线程?
你是说appart来自java.util.concurrent
?FunctionalJava得到了一些有助于并发编程的结构,如从这里开始的多部分教程中所述.
您是否以一种不构思为线程为过程的方式使用线程?
是的,在某种程度上线程根本没有概念化.以异步任务运行器为例.它使用了封面下的线程,但我没有看到它们,我也不关心它们.它们完全由任务运行员管理.
在封面下,它只是线程,但是当我们停止关注单个线程并且只是将它们想象为一些插槽,你可以以某种方式将代码放入并让它运行一段时间,那就是当我们开始达到更高的抽象水平.
代理/演员是一种常见的方法.一个Actor就像一个有一块状态的线程,然后你可以发送一些代码然后说"当你有时间时,你可以对你的状态做这件事"或者其他什么.
通常的免责声明:使用任何抽象级别的任何语言的并发编程都是困难和复杂的,并且存在许多风险.考虑到:
Java为使开发人员尽可能简单地进行并发编程已经走了很长的路.对于大多数情况,您将看到java.util.concurrent
您需要的大多数抽象:
Runnable
Thread
您可以扩展的接口和对象.只需输入您的代码,您就可以运行一个线程了Executors
:常量池,动态池,预定或其他.只需扔掉Runnable
它就能完成其余的工作.Semaphore
s和各种锁可以减轻你需要实现常见锁定技术的麻烦.wait()
和notify()
API.作为软件工程师,唯一剩下的就是确保编写正确的代码.意思是你应该知道你可能会暴露自己的危险情况:
仅当并发将直接改善应用程序行为时才使用线程.
如果您正在等待IO /网络/硬件绑定资源,DO会在其上生成一个线程,以便您可以继续执行其他操作.
如果您只是想优雅地分割CPU绑定计算,请不要使用线程.你最终可能会恶化你的表现.
如果您确实使用线程,请确保您已经彻底考虑了风险,并且三重检查您没有错过任何特殊情况.
进入事物的最快方法是进行Sun并发教程.除此之外,得到一本好书.
祝好运 :)
归档时间: |
|
查看次数: |
3078 次 |
最近记录: |