多线程编程的一个例子
关于多线程,理解上不难,做出来真不容易。
?
作业题是这样的:做三个线程(A、B、C),启动后输出启动信息,然后A、B调用wait等待;线程C调用sleep休眠一段时间,然后调用notifyAll,使线程A和线程B继续运行。线程A和线程B恢复运行后输出结束信息后结束,线程C判断线程A和B结束后,C自己也结束。
?
最初做的时候,抛出异常,网上查找,才知道多线程的代码要放到synchronized块里面。OK!照做,可还是出错,没有被唤醒。仔细看多线程说明,是需要一个共同的数据作为等待和唤醒的共享资源。费劲周折,使用Boolean值吧,可还是不唤醒,即使加了static也不行。
?
最后在一篇博文里看到只用布尔值还不行,得用数组,于是把布尔值改为布尔数组,问题最终得到解决。
?
最终代码是这样:
?