Java 头歌 第4关:使用volatile实现变量的可见性的两种实现方法

编程入门 行业动态 更新时间:2024-10-12 14:17:03

Java 头歌 第4关:使用volatile实现变量的可见性的<a href=https://www.elefans.com/category/jswz/34/1768716.html style=两种实现方法"/>

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实现变量的可见性的两种实现方法

本文发布于:2024-03-14 11:41:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736391.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:两种   变量   见性   方法   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!