- 主题:[心得]多线程的一点心得
>> 如果两个线程在时间上是不相干的,也即线程A和B先后运行,不会存在并发问题。
>> 如果两个线程在空间上也是不相干的,那也不会存在并发问题。
比如虽然都源自一个自己写的Thread类,但是各自new了对象出来,两个对象里的数据肯定不相干,这两个线程也不会互相影响。这是从ThreadLocal那联想到的。
--
FROM 120.244.232.*
第一句不确切,时间上的先后不一定能满足Happens-before关系
【 在 chzhang7901 (SunShine) 的大作中提到: 】
: >> 如果两个线程在时间上是不相干的,也即线程A和B先后运行,不会存在并发问题。
: >> 如果两个线程在空间上也是不相干的,那也不会存在并发问题。
: 比如虽然都源自一个自己写的Thread类,但是各自new了对象出来,两个对象里的数据肯定不相干,这两个线程也不会互相影响。这是从ThreadLocal那联想到的。
: ...................
--
FROM 124.64.19.*
嗯
【 在 appletree 的大作中提到: 】
: 第一句不确切,时间上的先后不一定能满足Happens-before关系
:
: 【 在 chzhang7901 (SunShine) 的大作中提到: 】
: ....................
- 来自「最水木 for iPhone13,2」
--
FROM 120.244.232.*
确切点说
在没有那堆线程工具类辅助的前提下
多个线程之间的时间先后关系一般是无法确定的
【 在 chzhang7901 (SunShine) 的大作中提到: 】
: 嗯
: - 来自「最水木 for iPhone13,2」
--
FROM 114.92.15.*
用join可以让他们分开运行
不过这样的多线程也没有了意义
【 在 oldwatch 的大作中提到: 】
: 确切点说
:
: 在没有那堆线程工具类辅助的前提下
: ....................
- 来自「最水木 for iPhone13,2」
--
FROM 120.244.232.*
第二点也不对。两个对象可能引用了全局的数据
【 在 chzhang7901 (SunShine) 的大作中提到: 】
: >> 如果两个线程在时间上是不相干的,也即线程A和B先后运行,不会存在并发问题。
: >> 如果两个线程在空间上也是不相干的,那也不会存在并发问题。
: 比如虽然都源自一个自己写的Thread类,但是各自new了对象出来,两个对象里的数据肯定不相干,这两个线程也不会互相影响。这是从ThreadLocal那联想到的。
: ...................
--
FROM 61.148.16.*
其实说穿了就是现在多线程编程的两个常见模型
时间解耦,就是协程的思路,一个进程一堆actor/command串着
java裸写的话api比较难看
空间解耦,就是队列/channel的思路,
Do not communicate by sharing memory; instead, share memory by communicating.
java的话可以用BlockingQueue凑合实现
【 在 chzhang7901 (SunShine) 的大作中提到: 】
: 用join可以让他们分开运行
: 不过这样的多线程也没有了意义
: - 来自「最水木 for iPhone13,2」
: ...................
--
修改:oldwatch FROM 114.92.15.*
FROM 114.92.200.*
引用了全局变量不就是有共同的空间了吗
【 在 jimmycmh 的大作中提到: 】
: 第二点也不对。两个对象可能引用了全局的数据
:
: 【 在 chzhang7901 (SunShine) 的大作中提到: 】
: ....................
- 来自「最水木 for iPhone13,2」
--
FROM 120.244.232.*
赞
【 在 oldwatch 的大作中提到: 】
: 其实说穿了就是现在多线程编程的两个常见模型
:
: 时间解耦,就是协程的思路,一个进程一堆acter/command串着
: ....................
- 来自「最水木 for iPhone13,2」
--
FROM 120.244.232.*
那就是空间相关了
【 在 jimmycmh 的大作中提到: 】
: 第二点也不对。两个对象可能引用了全局的数据
:
--
FROM 183.8.204.*