Java为多线程编程提供内置支持。
这就是我的书所说的。我也可以在C,C ++中进行多线程编程。那么它们是否也为多线程提供内置支持?
内置支持多线程意味着什么?是不是ACTUALLY为多线程提供支持的操作系统?
是否有任何编程语言不支持多线程?如果是这样的话? (我问这个问题是因为,如果操作系统提供多线程支持,那么为什么我们不能对该操作系统支持的所有语言进行多线程编程?)
答案 0 :(得分:4)
该问题是多线程的语言支持与库支持之一。
Java使用关键字synchronized
来锁定对象是一种语言级构造。 Object
(wait,notify,notifyAll)上的内置方法也直接在运行时实现。
关于语言是否应该通过关键字和语言结构以及核心数据类型实现线程而不是在库中具有所有线程功能,存在一些争论。
支持语言级线程有益的观点的研究论文是相对着名的http://www.hpl.hp.com/personal/Hans_Boehm/misc_slides/pldi05_threads.pdf。
理论上,构建在C运行时上的任何语言都可以访问诸如pthreads之类的库,并且在JVM上运行的任何语言都可以使用这些线程。简而言之,所有可以使用库(并且具有函数指针概念)的语言确实可以进行多线程处理。
答案 1 :(得分:1)
我认为它们意味着Java内置了volatile
和synchronized
关键字等关键字,以简化多线程,并且库已经提供了线程类,因此您不需要第三方库。
答案 2 :(得分:0)
语言需要构造来创建和销毁线程,反过来操作系统需要为语言提供这种行为。
异常是Java绿色线程根本不是真正的线程,我认为与Erlang类似。
没有线程支持的语言,比如QBasic在DOS中实现的Basic。 Basic应该是 basic ,因此线程和进程是高级功能,在语言意图中没有效率。
答案 3 :(得分:0)
C和C ++作为一种语言没有机制:
这不是语言规范的一部分。但是,每个主要操作系统都存在这样的设施。与Java不同,这些工具在不同的操作系统上有所不同:Linux上的pthread,OS X和其他UNIX衍生产品,Windows上的CreateThread
,实时操作系统上的另一个API。
Java具有Thread
,synchronized
块和方法的语言定义,'通知''等待'作为核心Object
等的一部分,这使得语言正确理解多线程。
答案 4 :(得分:0)
这意味着语言的运行时中有一些功能可以模拟线程的概念以及与之相关的所有功能,例如提供同步。幕后发生的事情取决于语言实现者......他们可以选择使用本机操作系统线程,也可以伪造它。
不支持它的语言可能是VB6(至少不是原生的,IIRC)