两种实现方法"/>
Java 头歌 第4关:使用volatile实现变量的可见性的两种实现方法
目录
编程要求
方法一:
方法二:
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充。
####测试说明
预期输出:10000
。
提示:可以使用两种方式实现原子性,所以本关有多种方式都可以通关。
方法一:
//方法1:
package step4;public class Task {public volatile int inc = 0;
//请在此添加实现代码
/********** Begin **********/public synchronized void increase() {inc++;}/********** End **********/public static void main(String[] args) {final Task test = new Task();for (int i = 0; i < 10; i++) {new Thread() {public void run() {for (int j = 0; j < 1000; j++)test.increase();};}.start();}while (Thread.activeCount() > 1) // 保证前面的线程都执行完Thread.yield();System.out.println(test.inc);}
}
方法二:
//方法2
package step4;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class Task {public volatile int inc = 0;
//请在此添加实现代码
/********** Begin **********/Lock lock=new ReentrantLock();public void increase() {lock.lock();inc++;lock.unlock();}/********** End **********/public static void main(String[] args) {final Task test = new Task();for (int i = 0; i < 10; i++) {new Thread() {public void run() {for (int j = 0; j < 1000; j++)test.increase();};}.start();}while (Thread.activeCount() > 1) // 保证前面的线程都执行完Thread.yield();System.out.println(test.inc);}
}
更多推荐
Java 头歌 第4关:使用volatile实现变量的可见性的两种实现方法
发布评论