Java多线程-真实的世界用例[已关闭]

j5fpnvbx  于 2023-06-04  发布在  Java
关注(0)|答案(6)|浏览(441)

**已关闭。**此问题正在寻求书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答复。

我们不允许问题寻求书籍,工具,软件库等的建议。您可以编辑问题,以便可以用事实和引用来回答。
3小时前关闭
Improve this question
我想从事多线程工作,但我目前的项目没有这样的机会。有人能指导我从哪里开始吗?我需要真实的的情况下,我可以直接跳到编码。我也是并排阅读的。
你可以参考一些网站来练习吗?

4ktjp1zp

4ktjp1zp1#

谷歌可以把你转到练习教程网站(比我好得多)。一个很好的真实的场景可以包括以下任何一个(可能看起来很学术,但这些技能绝对可以转移到实践中):
1.吃饭哲学家的问题。
1.读写器问题。
1.消费者/生产者问题。
一些更具体的:
1.并发alpha-beta搜索(这是非常棘手的)。
1.任何遗传算法都可以同时实现,并且由于内存/存储在线程之间共享,如果做得好,可能会非常具有挑战性(尝试绘制图像项目的半透明多边形)。你可以在Google上搜索一下)。
1.并发数据库访问可能相当有趣。为自己勾勒一个场景。
1.看看http://projecteuler.net/,其中包含一堆有趣的问题。这里的许多问题都可以使用线程来实现。
好好享受

r1zk6ea1

r1zk6ea12#

用户级线程模拟的多线程。这些线程在应用程序级别而不是OS内核级别实现。
这些线程也被称为绿色线程,因为,所以新鲜(全新的)和年轻(不成熟或成熟)。

真实的世界用例

  • 电脑游戏中,物体如汽车、摩托车等。他们只是线程。
    *异步通信允许应用程序执行其他任务,而不是等待任务完成。
  • 具有许多可以以任何顺序执行的任务的应用程序通常可以从分布式异步通信中受益。
oknwwptz

oknwwptz3#

当单线程花费很长时间来完成计算活动时,您应该将其分解为小任务并使用多线程来减少计算时间。
你可以在你的项目中看到很多多线程的用例。
1.其中一些任务可以独立运行,而不依赖于其他任务(只需跨一个新的Thread或提交Runnable/Callable任务到ExecutorService/ThreadPoolExecutor
1.当您需要等待多个并行任务完成才能继续下一个任务时(invokeAll()
例如,任务1启动三个独立的任务任务任务2、任务3和任务4,但任务5必须在任务2、任务3和任务4完成后启动。

Task 1              
----->               
         Task 2
         ----->
         Task 3
         ----->
         Task 4
         ----->
                  Task 5
-------------------------->

1.系统可使用多个CPU内核
1.当您有类似Fork-Join任务的用例时(用途:ForkJoinPool
1.当你想显示长时间计算任务的进度时(进度条可以在一个线程中显示,长时间计算任务可以由其他线程执行)
相关文章:
如何正确使用Java Executor?
使用invokeAll还是submit - java Executor服务
Java的Fork/Join vs ExecutorService -何时使用哪个?
等待直到所有线程在java中完成工作

nr7wwzry

nr7wwzry4#

我想看看disruptor库。这介绍了许多先进的多线程概念,一旦你理解它,并能使用它,你会知道比大多数人在这个问题上。

tjjdgumg

tjjdgumg5#

Java有几个问题迫切需要多线程解决方案。我最近解决的两个问题是:

  • 如果文件夹中有成千上万的文件,File.list会出现可怕的问题。
    *SAXParser.parse是推式解析器。许多xml用户更喜欢pull解析器,但不愿意添加另一个库。

使用简单的双线程解决方案可以大大帮助这两个问题。
如果是File.list,请在单独的线程中运行File.list,该线程带有一个特殊的FileFilter,该线程会将呈现给它的所有文件发布到一个BlockingQueue。然后可以使用BlockingQueue上的迭代器将文件传递给调用者。如果代码编写正确,则递归列出目录的增强是一个简单的附加功能。

SAXParser.parse也可以用类似的方法进行翻转。

我最近做了这两件事,发现经验非常有启发性。

56lgkhnf

56lgkhnf6#

我建议您设计以下系统来开始主题:
1.升降舵(行中的3个),考虑以下参数:
能源消耗,即最近的电梯将根据它是否正在向上移动或现在以及用户请求,电梯上的重量来接受您的请求
时间消耗。
1.文件读取器和写入器系统,其中多个用户可以:
Edit/Write/Search/Delete a file

相关问题