我正在尝试同步此run()方法。我希望一次只输入一个线程,但是我不明白为什么该解决方案告诉我使用 synchronized(obj)方法:
iOS
我的想法是创建一个锁并以这种方式对其进行同步:
APICoreKt.createRequest(callback: self) { (s) -> Nothing in
let lbl = UILabel(frame: CGRect(x: 100, y: 100, width: 100, height: 100));
lbl.text = s;
lbl.textColor = UIColor.black;
self.view.addSubview(lbl);
return KotlinUnit();
}
但是它不起作用,因为线程交替打印for的内容。这怎么可能?如果我在run方法的开头使用lock(),第一个线程是否不应该完成for的操作,然后释放该锁,然后让第二个线程进入该方法?
答案 0 :(得分:2)
使用
public synchronized void run() {
是
的简写public void run() {
synchronized (this) {
由于this
对于每个具有锁定的对象都是不同的,因此它们彼此独立。换句话说,它对您没有任何帮助。