Gho*_*_cs 0 java multithreading
我有一个多线程程序,我想知道使用"synchronized"的方式是正确的.
方式1:我有一个类对象(将被传递给多个线程),在其中称为MyClass:
public synchronized void set(String name) {
this.name = name;
}
Run Code Online (Sandbox Code Playgroud)
方式2:我有相同的类,但没有在其set方法中"同步":
public void set(String name) {
this.name = name;
}
Run Code Online (Sandbox Code Playgroud)
调用者将执行此操作:
MyClass myclass = new MyClass();
synchronized(myclass) {
myclass.set("myclass");
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我哪一个是实现多线程对象共享的正确方法?我很困惑这两个,我试过两个,他们似乎工作正常.
同步方法:
这取决于上下文,实际上 - 例如在某些情况下,调用者更好地进行同步,因为他们可以决定同步开销是否值得.例如,已知在一个线程上工作的所有调用者都不需要同步,这只会减慢速度.
对于所有不是时间关键的事情,最好避免在凌晨3点喝第5杯咖啡时需要调试的问题,同时你的同事挥动棒球棒并大声喊叫孩子不要提及的话. ..
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |