gpt4 book ai didi

java - 锁定外部线程还是内部线程?

转载 作者:行者123 更新时间:2023-12-02 12:46:28 24 4
gpt4 key购买 nike

我正在学习线程安全,在网上搜索时似乎找不到问题的明确答案。

这之间有什么区别和影响:

synchronized (lock) {
new Thread () {
public void run() {
// critical section
}
}.start();
}

还有这个:

new Thread () {
public void run() {
synchronized (lock) {
// critical section
}
}
}.start();

为了给您一个上下文,我正在编写一个小型实验室,方法是“每个请求一个线程”,因此每次调用该方法时,上述任一方法都会执行到“关键部分”执行它是自己的线程。

那么线程内部或外部的锁会产生影响吗?每个线程是否“继承”锁,还是必须位于每个线程内才能完全线程安全?

最佳答案

同步只是意味着一次只有一个线程可以执行代码的某一部分

在第一个示例中,一次只能有一个线程可以创建并启动新线程。但请注意,您没有保护关键部分(多个线程可以同时执行它们的“run”方法)

synchronized (lock) {
new Thread () {
public void run() {
// critical section
}
}.start();
}

在第二个例子中,多个线程可以创建并启动一个新线程,但一次只有一个线程可以执行临界区(受“锁”保护)

new Thread () {
public void run() {
synchronized (lock) {
// critical section
}
}
}.start();

关于java - 锁定外部线程还是内部线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44752211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com