Question:
A) Write a thread safe class with methods doA(), doB(), doC(). Each of these methods must report the method name, time of invocation, and calling thread name.
B) Write a multi threaded driver that spawns 4 threads, and each thread must call every method – doA(), doB(), doC() – 10 times
我假设这意味着 doA()、doB()、doC() 必须是安全的。但它们都不会改变对象内的共享状态,它们只是读取对象状态,如方法名、线程名和运行时间。那么,我需要同步每个方法吗?对于每个线程内的计数器,它是不共享的。
我有点疑惑,对象的哪个状态需要保护?
编辑: 我们是否需要一种机制来保证doA()、doB()、doC()的运行顺序?我不这么认为。
最佳答案
从它的声音来看,您的对象根本没有可变状态。没有可变状态的对象通常(不总是,但通常)是线程安全的,无需任何额外的锁定。当然,如果有其他要求确实暗示可变状态,答案就会不同。
关于java - 多线程安全类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6513443/