发布网友 发布时间:2022-05-26 21:24
共1个回答
热心网友 时间:2023-09-20 03:50
代码还是有很多不太足的地方。首先你没有输出主要是因为1.你往set里面添加数据的线程执行了sleep(1000)先,而输出线程没有;2.你的输出线程不是循环的,因此也就执行一次,由于你两个线程是同时添加进去的,或者说几乎同时添加进去,因此输出线程执行的时候可以肯定你的添加线程还没有做完一次循环。3.你没有考虑到线程安全的问题,在执行iterator期间,如果对set进行添加操作会造成非法操作的异常,具体名字忘掉了,建议使用synchronized对set进行同步。4.while(true)这个语句即使是空的,也会占用极高的cpu,不建议在这种长期运行的程序中使用,并且这一行并没有意义,不是么?我想你是担心主函数运行完导致程序终止,这是不会的,因为三个线程互相独立,都属于前台线程,只有当你添加的是守护线程的时候,前台线程结束才会通知守护线程终止,但也不是立即。很久不出结果也许是因为你运行时间太短了,起码100秒,不过所谓的结果也就是程序运行完了,不会有输出