How to use mkdirs in a thread safe manner in Java?

前端 未结 5 2266
执念已碎
执念已碎 2021-02-14 17:51

After experiencing issues with mkdirs() and poking around the interwebs, I get the impression that there are thread safety issues with mkdirs().

Is there a way to ensure

5条回答
  •  囚心锁ツ
    2021-02-14 18:33

    Okay, I know this has been inactive for a while, but I thought perhaps there was a simple solution. The article you linked in the comments on the question seems to indicate that the only problem is directories not being created. The solution there was to do this:

    if (!f.mkdirs()) {
        f.mkdirs();
    }
    

    However, that seems inefficient and can still have problems. So, why not simply do this:

    while (!f.mkdirs()) {}
    

    Simple, but it works.

    EDIT: After thinking a bit, that example may lag to oblivion and could cause thread lock. So, this might be a better idea:

    while (!f.mkdirs()) { Thread.yield(); }
    

    Of course, that would only be recommended if you're in a thread that could cause thread lock, and as long as it's not a high-priority situation. Just putting this out there.

提交回复
热议问题