语言级别的线程

xde*_*000 3 java multithreading

我正在阅读关于线程的内容,并且在很多书中都说Java支持语言级别和高级别的线程java.util.concurrent.

在语言层面支持线程意味着什么?

我认为Erlang是一种支持语言级别线程的语言......

mdm*_*dma 7

在语言级别支持线程意味着该语言为多线程提供了一流的支持,而不是仅通过类库提供二级支持.

在Java中,语言级别使用synchronizedvolatile关键字支持线程.使用监视器和易失性字段是相对低级的线程构造 - 更高级别的构造,例如通用锁,障碍,ThreadPools,并发集合java.util.concurrent,以及低级原子操作.

Java中的线程不仅仅是该语言中的几个关键字.的Java内存模型任务的多线程访问存储器的结果,例如,当一个线程改变都其他线程是可见的.这确保正确编写的线程程序按预期运行,而不管底层架构(指令重新排序,缓存一致性策略等).

原始的java类库提供了线程支持java.lang.Thread,代表一个线程,从JDk 1.2开始java.lang.ThreadLocal,代表线程局部变量.原始JDK还包括可执行对象的抽象概念 - java.lang.Runnable.并发工具使用Callable和扩展它Future,这使得创建异步结果比仅使用低级结构编码简单得多.

虽然你可以使用volatile,synchronized并且Runnable(和JDK 1.5之前一样),并发工具提供的类使编写线程程序变得更容易,并且更有可能使它们正确.