文章插图
04 该怎么办呢?方法也很简单,代码示例如下 。
class Chenmo {
private int lineCount = 0;
private int wordCount = 0;
public void write() {
String words = "我这一辈子,走过许多地方的路,行过许多地方的桥,看过许多次的云,喝过许多种类的酒,却只爱过一个正当年龄的人 。";
System.out.println(words);
synchronized (this) {
lineCount++;
wordCount++;
}
}
}
对行数统计(lineCount++)和字数统计(wordCount++)的代码进行加锁,保证这两行代码是原子性的 。也就是说,线程 B 在进行统计的时候,必须要等待线程 A 统计完之后再开始 。
原文链接:https://juejin.im/post/5d7ee216e51d4561af16ddb2synchronized (lock) {...} 是 Java 提供的一种简单的内置锁机制,用于保证代码块的原子性 。线程在进入加锁的代码块之前自动获取锁,并且退出代码块的时候释放锁,可以保证一组语句作为一个不可分割的单元被执行 。
推荐阅读
- Java Web前端到后台的常用框架介绍
- 快速弄懂Java 11 中的NIO 2.0
- java NIO 的最佳实践
- Java程序员须知的七个日志管理工具
- JavaScript生成一个不重复的ID
- Android NDK-深入理解JNI
- 硬核!如何模拟 5w+ 的并发用户?
- Python黑客实战编程--ssh爆破ss
- Java 13 明天发布,最新最全新特性解读
- 如何零基础入门编程