我在读Clojure是如何"酷"的,因为它的语法+它在JVM上运行,所以它是多线程的等等.
那么像ruby和python这样的语言本质上是单线程的吗?(作为web应用程序运行时).
python/ruby和在tomcat上运行的java之间的根本区别是什么?
web服务器不是在所有情况下都有线程池吗?
我在读Clojure是如何"酷"的,因为它的语法+它在JVM上运行,所以它是多线程的等等.
那么像ruby和python这样的语言本质上是单线程的吗?(作为web应用程序运行时).
python/ruby和在tomcat上运行的java之间的根本区别是什么?
web服务器不是在所有情况下都有线程池吗?
Python和Ruby都完全支持多线程.有些实现(例如CPython、MRI、YARV)实际上无法并行运行线程,但这是这些特定实现的限制,而不是语言的限制.这与Java类似,Java中也有一些实现无法并行运行线程,但这并不意味着Java是单线程的.
请注意,在这两种情况下,有很多实现是can个线程并行运行的:PyPy、IronPython、Jython、IronRuby和JRuby只是其中的几个例子.
一方面,PythJoice与Python、Ruby、java、C++、C++、C、PHP以及几乎所有其他主流语言,而不是主流语言的主要区别在于,Culjule有sane个并发模型.所有其他语言都使用线程,我们知道线程是一个糟糕的并发模型至少有40年了.Clojure OTOH有一个sane更新模型,它不仅可以向程序员展示一个sane并发模型,实际上还可以向程序员展示多个sane并发模型:原子更新、软件事务内存、异步代理、并发感知线程本地全局变量、future 、promise 、数据流并发,将来可能还会有更多.