synchronized关键字到底能不能防止指令重排序?

除了volatile关键字防止指令重排序还有哪些办法