我想研究多线程,但我目前的项目没有这样的机会。有人请指导我应该从哪里开始。我需要实时场景,以便我可以直接跳转到编码。我也是并排阅读。
您能否请参考一些网站进行练习。
答案 0 :(得分:8)
Google可以将您转到练习教程网站(比我更好)。一个很好的实时场景可能包括以下任何一个(可能看起来很学术,但技能绝对可以转化为练习):
更具体的一些:
享受。
答案 1 :(得分:2)
Java有几个问题,只是迫切需要多线程解决方案。我最近打了两个并且解决了:
使用简单的双线程解决方案可以大大提高这两点。
如果是 File.list ,请在包含特殊File.list
的单独帖子中运行FileFilter
,该帖子会将呈现给它的所有文件发布到{{1} }。然后可以使用BlockingQueue
上的迭代器将文件传递给调用者。如果代码写得正确,递归列出目录的增强是一个简单的补充。
SAXParser.parse 可以以类似的方式从内到外翻转。
我最近完成了这两项工作,并且发现这种经历非常具有启发性。
答案 2 :(得分:2)
当单个线程花费很长时间来完成计算活动时,您应该将其分解为小任务并使用多线程来减少计算时间。
您可以在项目中看到许多用于多线程的用例。
Thread
或将Runnable/Callable
个任务提交到ExecutorService/ThreadPoolExecutor
)当您需要等待完成多个并行任务才能继续执行下一个任务(invokeAll()
)
e.g。任务1启动三个独立任务任务2,任务3和任务4,但任务5必须在完成任务2,任务3和任务4后启动。
Task 1 -----> Task 2 -----> Task 3 -----> Task 4 -----> Task 5 -------------------------->
相关帖子:
How to properly use Java Executor?
Whether to use invokeAll or submit - java Executor service
答案 3 :(得分:1)
我会看一下disruptor库。这引入了许多先进的多线程概念,一旦你理解它并且可以使用它,你就会比这个主题了解更多。
答案 4 :(得分:1)
由用户级线程模拟的多线程。这些线程在应用程序级而非OS内核级别实现。
这些线程也称为绿色线程,因为新鲜(全新)和年轻(不成熟或成熟)。
真实世界用例
答案 5 :(得分:0)
我建议你设计以下系统来开始主题:
电梯(行中3个)考虑以下参数:
能源消耗,即最近的电梯将取决于您的要求是取决于它是向上移动还是现在用户要求,电梯上的重量
耗时。
多个用户可以使用的文件读写器系统:
Edit/Write/Search/Delete a file