关于join方法的调用位置。
来源:4-1 线程同步
weixin_慕仰9572461
2020-01-17 22:49:46

如果方法调用的顺序改为save.start然后是save.join()然后再draw.start最后是draw.join是不是也能解决同步的问题呢?
2回答
同学你好,同学好像对同步的理解有所偏差,同步是在同一时刻只有一个线程可以执行这个方法。也就是说同一个时间只能有一个线程得到执行,另一个线程必须等待当前线程执行完这个方法或者代码块以后再执行另一个线程的方法或者代码块。
例如:两个窗口在进行售票时,(两个窗口相当于两个线程),同一时间都要售买a车厢中20A座位的票,为了避免两个窗口都售卖这张票,就需要保证同一时刻只有一个窗口售卖成功,另一个窗口只能等待,之前的窗口卖完成以后在执行。
如果同学想要使用同步,则可以使用synchronized关键字。synchronized关键字在进行一个线程执行的过程中,其它线程要参与执行时就会起作用。synchronized的作用就是防止同一时刻其他线程进入执行该方法,避免造成数据不同步等问题。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕小尤
2020-01-18
同学你好,不能解决同步的问题。join()方法的作用是等待调用该方法的线程结束后才能执行。如果draw线程调用join()方法,那么只有当draw线程执行完毕,其他的线程才能执行。如果不加join(),那么两个线程可能交替执行。同步与join()方法调用的顺序无关。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题