Java多线程基本问题
Posted
技术标签:
【中文标题】Java多线程基本问题【英文标题】:Java Multithreading basic questions 【发布时间】:2016-12-12 20:44:01 【问题描述】:我在java多线程中有以下问题
在 Java 多线程中,所有线程共享同一段 java 代码并并行执行它们?
还是每个线程共享的Java代码段不同?
【问题讨论】:
Re “我也读过……” 你在哪里读到的?您能否逐字发布您阅读的内容以及来源,因为它没有意义。"Also I read that at a time only one thread can run.. So if this statement is true then where are achieving multithreading?"
-- 再次,请告诉我们你在哪里读到这篇文章。
是的。请点击此链接javatpoint.com/sleep()-method 如您所知,一次只执行一个线程。如果你让一个线程休眠了指定的时间,这个线程shedular会拾取另一个线程,以此类推。
"As you know well that at a time only one thread is executed."
-- 这个我不太清楚,其实我一直认为这就是线程的全部意义 -- 让程序流的多个线程同时执行 。此外,您的链接不支持您关于“只能运行一个线程”的说法。我坚信你的陈述是错误的。
更正,它确实说明了这一点,但它大错特错。不要相信作者写的任何东西。
【参考方案1】:
线程只能在多处理器上并行执行(每个 CPU 一个线程)。 在单处理器机器上,执行线程以使用 CPU 的空闲时间。
【讨论】:
【参考方案2】:是的,线程将执行同一段代码,但如果您的代码包含共享类级别的变量,则需要正确同步,以便每个线程读取一致的变量状态。
线程是为了确保通过多个线程同时访问一段代码。
有不同的方法可以实现线程安全。可以参考 java concurrency is practice 了解更多详情。
【讨论】:
以上是关于Java多线程基本问题的主要内容,如果未能解决你的问题,请参考以下文章