我在读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 、数据流并发,将来可能还会有更多.

Ruby相关问答推荐

用函数组合枚举器的Ruby方法

如何在 Shopify 脚本编辑器中显示数组值?

如何正确截断表格?

Rails 控制台中没有数据库连接

判断字符串是否包含Ruby数组中的任何子字符串

Ruby代码美化,多行拆分长指令

如何通过一组新的给定键更改哈希的所有键

无法正确自动生成 Ruby DevKit 配置文件

如何在 Ruby 中使用gets和gets.chomp

从 1 开始循环

如何在 RSpec 2 中自动加载 spec_helper.rb

rbenv install --list 不列出 2.1.2 版本

使用 RSpec 判断某物是否是另一个对象的实例

获取Ruby中当前目录的父目录

Ruby 哈希白名单过滤器

为什么这个 Ruby 对象同时具有 to_s 和 inspect 似乎做同样事情的方法?

Ruby 中的自然语言处理

从数组 Ruby 中删除元素

如何在Ruby中将字符串拆分为仅具有给定字符的两部分?

Eclipse 的首选 Ruby 插件?