java-等待使用者完成任务,然后其他人才能开始
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-等待使用者完成任务,然后其他人才能开始,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1075字,纯文字阅读大概需要2分钟。
内容图文
![java-等待使用者完成任务,然后其他人才能开始](/upload/InfoBanner/zyjiaocheng/667/96a68fe1cc20438dbdef591b04bfa691.jpg)
我有一个Java应用程序,它遍历树状文件夹结构并最终删除整个文件夹结构.为此,我在一个生产者(遍历一棵树并将路径放置到需要删除的文件)和许多实际执行删除作业的使用者中使用了阻塞队列.
文件夹必须为空才能删除,因此,请考虑采用以下结构:
/folder1/file1
/folder1/file2
/folder1/file3
/folder1/
这就是BlockingQueue在任何给定点可能包含的内容.考虑到有4个使用者轮询队列:
Consumer1将选择并删除/ folder1 / file1
Consumer2将选择并删除/ folder1 / file2
Consumer3将选择并删除/ folder1 / file3
Consumer4将提取并删除/ folder1
如果Consumer3尚未完成删除/ folder1 / file3的操作,那么Consumer4将无法删除/ folder1 /,因为它将被标记为非空.
使用者线程是否有办法等待其他使用者线程完成某些任务?
解决方法:
有许多解决业务问题的方法.
方法1:您的问题是,当Consumer 4实际上进入Folder时,它需要等待所有文件的删除.我认为,如果Consumer 4可以访问folder1,则不必这样做.它可以只是转到文件夹(操作系统路径)并检查其是否为空.如果为空,则删除它,然后等待.
方法2:生产者线程可以做更多的工作.如果发现所有的文件需要在文件夹1被删除.它不必先放置所有文件名,然后再放置文件夹名.它应该只放置文件夹名称.只有一个使用者线程将获得文件夹名称并将其删除.
内容总结
以上是互联网集市为您收集整理的java-等待使用者完成任务,然后其他人才能开始全部内容,希望文章能够帮你解决java-等待使用者完成任务,然后其他人才能开始所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。