Java 接口多线程访问实现方法 - 使用 synchronized、Lock 和 volatile
Java \u7684\u63a5\u53e3\u672c\u8eab\u5e76\u4e0d\u76f4\u63a5\u652f\u6301\u591a\u7ebf\u7a0b\u8bbf\u95ee\u3002\u63a5\u53e3\u53ea\u662f\u4e00\u79cd\u5b9a\u4e49\u89c4\u8303\u7684\u673a\u5236\uff0c\u7528\u4e8e\u63cf\u8ff0\u7c7b\u5e94\u8be5\u5177\u6709\u7684\u65b9\u6cd5\u548c\u5c5e\u6027\u3002\u591a\u7ebf\u7a0b\u8bbf\u95ee\u7684\u652f\u6301\u57fa\u4e8e\u5b9e\u73b0\u63a5\u53e3\u7684\u5177\u4e3a\u7c7b\u3002\n\n\u5982\u679c\u60f3\u8981\u5b9e\u73b0\u591a\u7ebf\u7a0b\u8bbf\u95ee\u63a5\u53e3\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u51e0\u79cd\u65b9\u5f0f\u5b9e\u73b0\uff1a\n\n1\u3002\u5728\u5b9e\u73b0\u7c7b\u4e2d\u4f7f\u7528\u0060synchronized\u0060\u5173\u952e\u8bcd\uff1a\u53ef\u4ee5\u5728\u5b9e\u73b0\u63a5\u53e3\u7684\u7c7b\u7684\u65b9\u6cd5\u4e0a\u4f7f\u7528\u0060synchronized\u0060\u5173\u952e\u8bcd\uff0c\u786e\u4fdd\u5728\u591a\u7ebf\u7a0b\u73af\u5883\u4e2d\u5bf9\u65b9\u6cd5\u7684\u8bbf\u95ee\u662f\u540c\u6b65\u7684\u3002\u4f8b\u5982\uff1a\n\njava\npublic class MyInterfaceImpl implements MyInterface {\n public synchronized void method() {\n // \u65b9\u6cd5\u4f53\n }\n}\n\n\n2\u3002\u4f7f\u7528\u0060Lock\u0060\u63a5\u53e3\uff1a\u53ef\u4ee5\u4f7f\u7528\u0060Lock\u0060\u63a5\u53e3\u63d0\u4f9b\u7684\u9501\u5b58\u673a\u5236\u6765\u5b9e\u73b0\u5bf9\u63a5\u53e3\u65b9\u6cd5\u7684\u591a\u7ebf\u7a0b\u8bbf\u95ee\u63a7\u5236\u3002\u4f8b\u5982\uff1a\n\njava\npublic class MyInterfaceImpl implements MyInterface {\n private Lock lock = new ReentrantLock();\n\n public void method() {\n lock.lock();\n try {\n // \u65b9\u6cd5\u4f53\n } finally {\n lock.unlock();\n }\n }\n}\n\n\n3\u3002\u4f7f\u7528\u0060volatile\u0060\u5173\u952e\u8bcd\uff1a\u5982\u679c\u63a5\u53e3\u4e2d\u7684\u5c5e\u6027\u9700\u8981\u5728\u591a\u7ebf\u7a0b\u73af\u5883\u4e2d\u8bbf\u95ee\uff0c\u53ef\u4ee5\u5c06\u5c5e\u6027\u52a0\u8a00\u4e3a\u0060volatile\u0060\uff0c\u786e\u4fdd\u591a\u7ebf\u7a0b\u4e2d\u5bf9\u5c5e\u6027\u7684\u8bfb\u5199\u64cd\u4f5c\u662f\u53ef\u89c1\u7684\u3002\u4f8b\u5982\uff1a\n\njava\npublic interface MyInterface {\n volatile int count = 0;\n}\n\n\n\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u4ee5\u4e0a\u65b9\u6cd5\u53ea\u662f\u5728\u5b9e\u73b0\u63a5\u53e3\u7684\u7c7b\u4e2d\u5b9e\u73b0\u4e86\u591a\u7ebf\u7a0b\u8bbf\u95ee\u7684\u652f\u6301\uff0c\u5e76\u4e0d\u80fd\u76f4\u63a5\u4f7f\u63a5\u53e3\u672c\u8eab\u652f\u6301\u591a\u7ebf\u7a0b\u8bbf\u95ee\u3002\u63a5\u53e3\u672c\u8eab\u53ea\u662f\u4e00\u79cd\u89c4\u8303\uff0c\u4e0d\u5305\u542b\u5177\u4f53\u7684\u5b9e\u73b0\u903c\u8f9c\u3002\u591a\u7ebf\u7a0b\u8bbf\u95ee\u7684\u5177\u4f53\u5b9e\u73b0\u9700\u8981\u5728\u5b9e\u73b0\u63a5\u53e3\u7684\u7c7b\u4e2d\u8fdb\u884c\u3002
原文地址: https://www.cveoy.top/t/topic/pqg4 著作权归作者所有。请勿转载和采集!