![]() |
1
2
好吧,类本身不是线程安全的。只要在代码中记录和观察到这一点,就不一定是个问题。如果不是这样,您可能会丢失对将并行运行的线程对象的引用,如果两个使用者同时进入start()方法。 当然,用作信号量的标志也应该是易失的。 这个类的API有点奇怪。您可以实现runnable,对其他类说“使用我的run方法来调用我”,然后模仿一个完整线程对象的start方法。您可能希望将run方法隐藏在内部类中。否则,它会让人有点困惑如何使用对象。
和往常一样,任何涉及单词的模式
|
![]() |
2
6
我建议不要直接使用线程类。自Java 5以来可用的执行器框架简化了线程中涉及的许多问题。其思想是您的类将执行所需的任务,并且所有线程功能都由执行器管理,从而节省了处理线程复杂性的工作。 可以在Java执行器框架上找到一个好的介绍 here . |
![]() |
3
2
另一件事是争论…您没有显示任何将被线程修改的内容,因此根据修改的内容,您可能需要同步(锁等)。 |
![]() |
4
1
1)您应该声明退出为易失性,以防止线程可见性问题。 如果多个线程可以调用stop(),那么线程也应该是可变的。 2)对interrupt的调用将只对可中断的阻塞操作抛出interruptedException。根据您在线程中执行的阻塞操作,可能需要采取更多的操作。 3)如果希望类实例可重用,则应在start()方法中将exit设置为false。 |
![]() |
5
0
exit变量应该是volatile。此外,遵循更正常的编码约定也是很有用的实践。-) |
![]() |
6
0
我喜欢有人看守的街区( http://java.sun.com/docs/books/tutorial/essential/concurrency/guardmeth.html 关于“这个”。您可以通知线程很快从循环中退出,然后再次检查“finished”var。在通常使用thread.sleep(x)的地方,使用this.wait(x),在整个循环中使用synchronized(this)块。您还需要处于同步(此)块中才能调用此.notifyAll()。 |
|
user29759326 · 如何返回递归函数中的最后一个值? 4 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 4 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 4 月前 |
![]() |
rudraraj · java中未声明最终变量 4 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 4 月前 |