如何在读取文件时获取线程跟踪

时间:2011-12-01 10:23:47

标签: java multithreading thread-safety

我有File并且我想执行以下任务:(只是为了获得有关线程读写文件的更多知识。)

当应用程序启动并且文件被读取时,我希望获得有关所有已打开的流以及从同一流中读取的线程数的信息。

有没有办法可以通过反射获得所有流信息。还有另外一种方法吗?

2 个答案:

答案 0 :(得分:0)

我相信这是你必须跟踪自己的事情。如果您在线程之间共享文件流(我建议您不要这样做,请使用一个线程来读取流并将工作传递给线程池,如果您也需要。)您可以跟踪所有线程试图读取流。

答案 1 :(得分:0)

我会建议某种StreamFactory类来为你维护这些信息。然后,线程可以执行InputStream getStream(File)closeStream(InputStream)或类似的操作,并且工厂将维护哪个线程具有哪些流打开的列表,并提供一些统计函数,例如:

public Collection<InputStream> getOpenStreams()

public int getNumThreadsWithStream(InputStream);