1
4
你的问题不太清楚。
这是正确的。没有冲突。值对象存储在
如果两个类都是用同一线程执行的,那么除非在调用之间更改线程的局部值,否则这两个类的结果都相同。如果一个不同的线程执行Class2,那么这两个线程将具有不同的值(根据您的示例)。 您可能会混淆在时间、类/方法存储和代码中发生的线程执行。这两个完全不同。一个线程可以执行任何和所有方法,或者您可以让多个线程在单个类中执行相同的方法。您不能在代码中“看到”线程。如果没有其他图片,你必须想象它们——它需要仔细的可视化。
现在,您可以使用
那么当您使用本地线程时,就不必检查它是否是
下面尝试演示如何在多个线程中执行此操作:
当我显示classn(val)时,这个值就是skip thread局部变量当时设置的值。 为了更具体地回答您的问题,在本例中:当由thread1执行时,Class1和Class2代码都将被跳过。当由thread2执行时,它们不会被跳过。
注意,有另一种线程本地调用
编辑
如果Class1中的代码总是将Skip值设置为true,那么行为会有所改变。如果线程首先执行Class1,然后执行Class2,则跳过将是
编辑
重读你的问题。如果您实际上想要对所有线程使用完全相同的状态,那么您将不会使用
|