![]() |
1
1
如果我没有错,那应该是正确的。 这是对堆栈与堆的基本理解。堆栈上声明的任何内容(函数中声明的变量)只能在本地使用。堆上声明的变量可以全局访问,也可以由其范围内的任何函数访问。 因此,如果您有一个线程处理一个函数,那么函数中的所有变量只能在该函数中访问。但是如果您有一个全局变量和两个线程,那么两个线程都可以访问该变量。问题在于,如果它们写入该变量,则必须确保它们不会相互覆盖。 解决方案是在一个线程对堆变量进行读/写时锁定堆变量,然后在完成时解锁堆变量。 |
![]() |
2
0
如果运行下面的代码,您认为会发生什么?您将看到类似的输出,但顺序可能不同。
|
![]() |
3
-1
你说得对。 静态变量可以作为Singleton在应用程序中插入,无论您有多少线程,它们都将始终引用同一个变量。 至于实例变量 “k” ,它只在嵌套类不是静态的情况下工作,这意味着 需要 的实例 主要的 能够安装 单处理器 。您的实例 单处理器 会有一个隐藏的变量引用你 主要的 例子就像你要写这个一样:
把你所有的 单处理器 相同的 主要的 例子 所有这些都是危险的,线程可能会获取变量 同时 另一个线程正在修改它。有很多关于线程安全的高级主题。对于简单类型,可以使用原子变量,se Concurrency package JavaDoc . |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
![]() |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
![]() |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
![]() |
rhymes · 如何让线程操作相同的java列表 2 年前 |