Getters should return a copy of the value. But cloning objects and copying arrays are expensive operations. Too much defensive programming will eventually ruin the bean's performance. The designer should find the right balance here. Clean beans are thread safe Multithread programming is difficult.
Most bugs are a nightmare to track down.
Once again, you should be able to trust beans, which should react correctly in a multithreaded environment. An unsafe bean that is integrated into an application can make the whole application unsafe. A bean can synchronize itself or its internal objects when needed and still be considered thread safe. But a clean bean should avoid synchronizing external objects directly, because this can lead to liveness problems. Remember, a clean bean is a black box that we trust because it behaves correctly.