Java 接口多线程访问:同步机制详解
Java\u7684\u63a5\u53e3\u662f\u4e00\u79cd\u89c4\u8303\uff0c\u7528\u4e8e\u5b9a\u4e49\u7c7b\u7684\u884c\u4e3a\u548c\u529f\u80fd\u3002\u63a5\u53e3\u672c\u8eab\u4e0d\u652f\u6301\u591a\u7ebf\u7a0b\u8bbf\u95ee\uff0c\u4f46\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u4f7f\u5b9e\u73b0\u8be5\u63a5\u53e3\u7684\u7c7b\u652f\u6301\u591a\u7ebf\u7a0b\u8bbf\u95ee\uff1a\n\n1\uff0e\u5728\u5b9e\u73b0\u7c7b\u4e2d\u4f7f\u7528\u76f8\u540c\u6b65\u65b9\u5f0f\u5173\u952e\uff1a\u5728\u5b9e\u73b0\u7c7b\u7684\u65b9\u6cd5\u4e2d\u4f7f\u7528\u76f8\u540c\u6b65\u65b9\u5f0f\u5173\u952e\u53ef\u4ee5\u4fdd\u8bc1\u5728\u540c\u4e00\u65f6\u95f4\u53ea\u6709\u4e00\u4e2a\u7ebf\u7a0b\u53ef\u4ee5\u8bbf\u95ee\u8be5\u65b9\u6cd5\u3002\u8fd9\u6837\u53ef\u4ee5\u907f\u514d\u591a\u4e2a\u7ebf\u7a0b\u540c\u65f6\u8bbf\u95ee\u63a5\u53e3\u65b9\u6cd5\u5bfc\u81f4\u7684\u6570\u636e\u7ade\u4e89\u548c\u4e0d\u4e00\u8272\u6027\u3002\n\njavapublic class MyInterfaceImpl implements MyInterface { @Override public synchronized void myMethod() { // 该方法在同一时间只能被一个线程访问 }}\n\n2\uff0e\u4f7f\u7528\u53ef\u91cd\u5165\u9501\u76d8\u7c7b\uff1a\u53ef\u91cd\u5165\u9501\u76d8\u662f\u7f8e\u591a\u63d0\u4f9b\u7684\u4e00\u4e2a\u53ef\u91cd\u5165\u9501\u76d8\uff0c\u53ef\u4ee5\u5728\u5b9e\u73b0\u7c7b\u4e2d\u4f7f\u7528\u53ef\u91cd\u5165\u9501\u76d8\u6765\u4fdd\u8bc1\u540c\u4e00\u65f6\u95f4\u53ea\u6709\u4e00\u4e2a\u7ebf\u7a0b\u53ef\u4ee5\u8bbf\u95ee\u63a5\u53e3\u65b9\u6cd5\u3002\n\njavaimport java.util.concurrent.locks.ReentrantLock;
public class MyInterfaceImpl implements MyInterface { private ReentrantLock lock = new ReentrantLock();
@Override public void myMethod() { lock.lock(); try { // 该方法在同一时间只能被一个线程访问 } finally { lock.unlock(); } }}\n\n3\uff0e\u4f7f\u7528\u652f\u6301\u53d8\u91cf\u5173\u952e\uff1a\u5982\u679c\u63a5\u53e3\u4e2d\u5b9a\u4e49\u7684\u5b58\u50a8\u9700\u8981\u5728\u591a\u4e2a\u7ebf\u7a0b\u4e4b\u95f4\u5171\u4eab\uff0c\u53ef\u4ee5\u4f7f\u7528\u652f\u6301\u53d8\u91cf\u5173\u952e\u6765\u4fdd\u8bc1\u53ef\u89c1\u6027\u548c\u6709\u5e8f\u6027\uff0c\u5c31\u53ef\u4ee5\u907f\u514d\u7ebf\u7a0b\u8bbf\u95ee\u63a5\u53e3\u5b58\u50a8\u65f6\u7684\u6570\u636e\u4e0d\u4e00\u8272\u6027\u95ee\u9898\u3002\n\n```javapublic interface MyInterface { volatile int sharedField = 0;}\n\n\u6ce8\u610f\u7684\u662f\uff0c\u4ee5\u4e0a\u65b9\u6cd5\u53ea\u80fd\u4fdd\u8bc1\u591a\u4e2a\u7ebf\u7a0b\u8bbf\u95ee\u63a5\u53e3\u65b9\u6cd5\u6216\u5b58\u50a8\u7684\u7ebf\u7a0b\u5b89\u5168\u6027\uff0c\u800c\u65e0\u6cd5\u4fdd\u8bc1\u63a5\u53e3\u65b9\u6cd5\u4e4b\u95f4\u7684\u539f\u5b50\u6027\u64cd\u4f5c\u3002\u5982\u679c\u9700\u8981\u4fdd\u8bc1\u63a5\u53e3\u65b9\u6cd5\u4e4b\u95f4\u7684\u539f\u5b50\u6027\u64cd\u4f5c\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528\u76f8\u540c\u6b65\u65b9\u5f0f\u5173\u952e\u3001\u9501\u76d8\u7c7b\u6216\u539f\u5b50\u7c7b\u7b49\u5de5\u5177\u3002
原文地址: https://www.cveoy.top/t/topic/pqhh 著作权归作者所有。请勿转载和采集!