请教使用java多线程理解的问题

我觉得面向业务的多线程解决问题的两种思路,一个完整的A业务。1.拆分为多个部分由不同线程协作完成。
2.多个线程多次完成A业务,线程间没有协作。
对于第一种可以用阻塞唤醒,阻塞队列完成。
那第二种难道是多次启动线程就行了吗?,那跟每次新new一个A业务对象有什么区别?
还有什么时候使用多线程最好,举个例子
恳请指点,谢谢谢谢。。

3个回答

你的第二种情况是什么场景下使用的,它这个是并行,一般常用于服务器端,像多个客户端请求服务器的同一个业务,就是这种场景。你没描述清楚1和2的应用场景,多线程在不同场景下使用方法不同

qq_39085422
微微泛黄 回复qq1224722373: 聊天工具,多个聊天窗口,与多个好友同时进行聊天
大约 2 年之前 回复
qq_34150524
qq1224722373 回复天涯泪小武: 好的谢谢谢谢
大约 2 年之前 回复
tianyaleixiaowu
天涯泪小武 回复qq1224722373: 在我博客中有几篇讲多线程实战的,如RateLimiter,CountDownLatch等,里面都是一些多线程在实际项目中的应用。空谈多线程概念没什么意义,得知道哪些时候该用多线程
大约 2 年之前 回复
qq_34150524
qq1224722373 那您举一个例子吗关于第二个场景,谢谢。我还真没考虑场景,只想了如果使用多线程的情况下
大约 2 年之前 回复

1:每个部分由不同的线程完成
2:同时多个线程完成同一个任务,线程之间没协作。
这个意思?

qq_34150524
qq1224722373 嗯嗯
大约 2 年之前 回复

1.任务拆分,多线程协作完成的情况,大致是这么回事,只是不一定含有阻塞和唤醒操作,这个取决于模块设计。
2.线程 和 new 一个对象是不一样的概念,它们本身就是不同的东西。多个线程使用的业务对象可能是同一个。
多线程本质是为了更好的使用资源,提高系统性能,但并不是所有场景都适合用多线程编程(另外,并发不等于多线程编程)
3.线程和资源是两个概念,强调一下资源的存在。
举几个例子
1.自助餐厅,每个人都可以自主点餐,每个人都可以看成是一个线程,执行的任务是点餐,这个情景下,资源足够,没有规则约束。最直观的多线程运作
2.银行排队,每个人都领号排队,每个人都是一个线程,执行的任务是存钱,但只能等轮到自己的时候才能行动,有资源限制和约束,窗口越多,可以同时进行的线程操作就越多
3.医生门诊,每个人都领号排队,每个人都是一个线程,执行的任务是就诊,但医生只有一个,资源紧张,再多人同时来都没用,都得一个个来
4.团队协作,每个人的任务有交界处,但不完全重合,故可以先完成独立的部分,需要交接完成的任务需要等“交接”动作发生,队友的任务成果就是一个资源
(以上例子里的资源,也可以同时看做线程,现象简单化,就不做这个讨论了,就当做是不可变资源)
举例子 是为了说明,多线程编程其实是为了能更加高效和充分的利用资源,并不是启动一个线程那么简单。望题主能更好的理解线程的意义
凑巧路过回答,感觉问题有几个比较别扭的含义。。如果有什么用词不当的 或者 理解错了题主意思的话,请各位指出

vane11
Vane11 回复qq1224722373: 多线程编程一般都是涉及到“公共资源”,就是很多个线程使用同一个资源的情况。保存文件,如果多个线程操作的是同一个文件,那么这个例子是不恰当的,文件读写是锁死的,只能一个个来,就是你1秒,我1秒,他1秒这样来,不能直接你我他都1秒,这类情况可以引申出“并发问题”这个概念,就不展开讨论了。再说说业务类吧,对业务处理类是没有特殊的规定的,它只是定义了一个处理方法(该怎么完成这个任务的执行方法,例如加法,只是将参数相加),就像自助的情况下,大家都能随意的进行点餐,但点餐步骤是一样的。多线程编程是一种思想,更多的是说 在编码处理方法的时候考虑到多线程下的各种情况(例如资源竞争、并发、读写锁),不同于只是写一个普通方法。运行这个处理方法的过程都是“在另一个线程运行这个方法”,也就是另起一个线程,并没有说需要把这个业务类写成线程类,可能刚刚接触的时候对这个不好理解,可以看看Thread类的使用,他的作用只是启动线程,完成业务操作是其他处理类要做的事,各自分工不同。这个更多的是编码是的考虑,一个项目可以处处都体现出对多线程的考虑,可能没讲到重点。。。讲多了
大约 2 年之前 回复
qq_34150524
qq1224722373 嗯嗯,谢谢谢谢。我就是有点疑惑这个,我的看看对象和线程的运行机制。假如有个保存文件的业务,每次需要1秒才完成。这时应该使用多线程了吧,线程都是独立的。代码实现的话是应该把这个业务类写成线程类还是有其他写法?麻烦能简单说一下概况,剩下的我看书百度,我java编程思想看完了但还是有疑惑,应该是没有项目实践的原因,之前项目没用到多线程
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!