一系列1: 细说Java多线程之内存可见性

xiaoxiao2021-02-28  97

代码练习

package com.thread.Thread_01; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; class Counter { private static volatile int num = 0; private Lock lock = new ReentrantLock(); /* * 一种方式 * public static int getCou() { \ * synchronized(Counter.class) { num++; * return num; * } * } */ public int getCou() { //不能再static中使用 lock.lock(); try { num++; return num; } finally { lock.unlock(); } } } class MyApp extends Thread { public void run() { for (int i = 0; i < 500; i++) { Counter counter = new Counter(); int cou = counter.getCou(); System.out.println(currentThread().getName() + " : " + cou); } } } package com.thread.Thread_01; public class App { public static void main(String[] args) { Thread t1 = new MyApp(); t1.setName("*********"); t1.start(); Thread t2 = new MyApp(); t2.setName("&&&&&&&&&"); t2.start(); } }
转载请注明原文地址: https://www.6miu.com/read-53709.html

最新回复(0)