我对在一台机器的多个核心中执行多个线程感到困惑。
例如,我有一个方法,建造一座100层的建筑。
synchronized buildingStories(){
}
为了更快地完成构建,我决定使用4个worker(线程)。假设t1何时构建一个floor1,t2何时构建floor2,依此类推。
一旦t1锁定 buildingStories
,t2将无法获得锁并进行构建,直到t1释放它。即使机器是多核的,在共享资源空闲之前,其他线程或工作线程也必须排队,多线程如何提高性能?最后,线程必须等到轮到它运行到核心来处理它。
这是一个非常天真的问题,但如果你能理解我的建议,我将不胜感激。
1条答案
按热度按时间eanckbw91#
你说得对。如果两个线程锁定同一个对象,那么其中一个线程将阻塞,这对性能没有帮助。另一方面,如果这两个线程可以完全独立地运行,则会获得巨大的性能提升。