gpt4 book ai didi

java - Thread-Safe在java中是什么意思或者什么时候我们叫Thread-Safe?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:09:00 25 4
gpt4 key购买 nike

我不理解这个概念。

public class SomeName {

public static void main(String args[]) {

}

}

这是我的类(class) SomeName。现在这里的线程是什么。

  1. 我们是否将类称为线程。
  2. 当其他对象试图访问它的方法或成员时,我们是否将此类称为线程?
  3. 当其他对象试图访问这个对象时,我们是否将这个类称为线程?
  4. 当我们在 java 中将某些东西称为线程安全时,这意味着什么?

最佳答案

线程安全意味着避免一些问题。最常见也可能是最糟糕的称为线程锁。古老的类比是哲学家用餐的故事。他们非常有礼貌,不会在别人夹菜的时候伸出筷子夹菜。如果他们都同时伸出手,那么他们都会同时停下来等待……什么也不会发生,因为他们都太有礼貌了,不会先走。

正如其他人所指出的,如果您的应用程序从不创建额外的线程,而只是从一个主方法运行,那么就只有一个线程,或者只有一个“餐饮哲学家”,因此不会发生线程锁。当您有多个线程时,避免线程锁的最简单方法是使用“监视器”,它只是一个预留的对象。实际上,您的方法必须在访问线程之前在此监视器上获得“锁定”,因此不会发生冲突。但是,您仍然可以拥有线程锁,因为可能有两个对象试图访问两个不同的线程,每个线程都有自己的监视器。对象 A 必须等待对象 B 释放其对监控对象 1 的锁定;对象 B 必须等待对象 A 释放其对监视器对象 2 的锁定。所以现在您又回到了线程锁。

简而言之,线程安全并不难理解,但确实需要时间、实践和经验。第一次编写多线程应用程序时,您遇到线程锁。然后你就会学习,很快就会变得非常直观。最大的警告是您需要使应用程序的多线程部分尽可能简单。如果你有很多线程,有很多监视器和锁,那么确保你的用餐哲学家永远不会卡住会变得更加困难。

Java 教程非常好地介绍了线程;这是我唯一需要的资源。

关于java - Thread-Safe在java中是什么意思或者什么时候我们叫Thread-Safe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7301924/

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