关于阻塞主线程
join的错误用法
Thread.join() 作用为阻塞主线程,即在子线程未返回的时候,主线程等待其返回然后再继续执行.
join不能与start在循环里连用
以下为错误代码,代码创建了5个线程,然后用一个循环激活线程,激活之后令其阻塞主线程.
threads = [Thread() for i in range(5)]
for thread in threads:
thread.start()
thread.join()
执行过程:
1. 第一次循环中,主线程通过
1.在类中方法上加上
synchronized关键字,是对整个对象加锁,当一个线程访问带有synchronized的方法时,其他带有synchronized的方法的访问都会阻塞。
样例:
public class ThreadTest {
public static void main(String[] args) {
Stu stu = new Stu();
StuThread1 t1 = new StuThread1(stu