Why doesn't java use thread-safe data structure for signal?