在我的小型应用程序中,我有两个类的线程——基本上是作者和读者。可以将多个读取器分配给单个写入器。作家通过写入他们的chunkBuffer
变量来与读者互动。
现在,我不能完全解决这里的线程安全问题:如果我不将 存储chunkBuffer
在静态ThreadLocal
变量中,所有阅读器将共享一个 chunkBuffer,这很糟糕。但是,如果我确实将 chunkBuffer 存储在 static 中ThreadLocal
,作为单独线程的 writer 将获得自己的 chunkBuffer 副本并将继续写入它,而它写入的任何数据都不会到达读者。你能解释一下这里有什么问题吗?非常感谢。
编辑换句话说,有没有一种方法可以创建一个字段,该字段对于线程子类的每个实例(如 ThreadLocal)都是唯一的,但可以根据需要从其他线程访问?