"Java线程安全示例:4个线程对共享变量进行加减操作"\n本文提供了一个Java示例程序,展示了如何使用锁机制来确保4个线程对共享变量j进行加减操作时的线程安全。代码使用synchronized关键字和共享锁对象来保护对j的访问,避免竞态条件的发生。\n\njava\npublic class ThreadSafetyExample {\n private static int j = 0;\n private static final Object lock = new Object();\n\n public static void main(String[] args) {\n Thread incrementThread1 = new IncrementThread();\n Thread incrementThread2 = new IncrementThread();\n Thread decrementThread1 = new DecrementThread();\n Thread decrementThread2 = new DecrementThread();\n\n incrementThread1.start();\n incrementThread2.start();\n decrementThread1.start();\n decrementThread2.start();\n\n try {\n incrementThread1.join();\n incrementThread2.join();\n decrementThread1.join();\n decrementThread2.join();\n } catch (InterruptedException e) {\n e.printStackTrace();\n }\n\n System.out.println(\"Final value of j: \" + j);\n }\n\n private static class IncrementThread extends Thread {\n @Override\n public void run() {\n for (int i = 0; i < 100000; i++) {\n synchronized (lock) {\n j++;\n }\n }\n }\n }\n\n private static class DecrementThread extends Thread {\n @Override\n public void run() {\n for (int i = 0; i < 100000; i++) {\n synchronized (lock) {\n j--;\n }\n }\n }\n }\n}\n\n\n在这个示例中,使用了一个共享的锁对象lock来保护对j的访问。在每个线程的run方法中,使用synchronized关键字将对j的操作包裹起来,确保同一时间只有一个线程可以访问j。这样可以保证线程安全,避免了竞态条件的发生。\n\n最后,使用join方法等待所有线程执行完毕,然后打印最终的j的值。\n


原文地址: https://www.cveoy.top/t/topic/pvmO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录