多线程初探(四)
来源:互联网 发布:云服务器 8000 端口 编辑:程序博客网 时间:2024/06/05 10:00
package com.liujunhua.it02;/** * 如何查找多线程的安全问题: * 1.明确哪些代码是多线程运行代码 * 2.明确哪些是共享数据 * 3.明确多线程运行代码中哪些语句是操作共享数据的。 */public class Demo01 {public static void main(String[] args) {Cus cus = new Cus();Thread t1 = new Thread(cus);Thread t2 = new Thread(cus);Thread t3 = new Thread(cus);t1.start();t2.start();t3.start();}}class Bank {private int sum = 0;private Object obj = new Object();public void add(int n) { /* * 这里用到了同步代码块,只允许单个线程执行该代码块代码 * 同步代码块的作用:同步代码块里的代码不允许多个线程同时操作,只允许当前正在对代码块的线程操作 * 我的思考: * 同步代码块不一定用在继承Thread或实现runnable接口的类中,也可以用在操作共享数据的类中 */synchronized (obj) {sum = sum + n;System.out.println("sum=" + sum);}}}class Cus implements Runnable {private Bank1 b = new Bank1();@Overridepublic void run() {for (int i = 0; i < 3; i++) {b.add(100);}}}
0 0
- 多线程初探(四)
- 多线程初探(一)
- 多线程初探(二)
- 多线程初探(三)
- 多线程初探(五)
- 多线程初探(六)
- 多线程初探(七)
- 多线程初探(八)
- tolua++初探(四)
- Oracle初探(四)
- 初探UiAutomator(四)
- 异常初探(四)
- 集合初探(四)
- java 初探(四)
- tolua++初探(四)(转)
- 初探Remoting双向通信(四)
- 初探PowerShell OneGet(四)
- CUDA学习(四)初探
- mysql配置文件详解
- postgresql基本语法
- android开发之实现动态打勾效果(DrawHookView)
- dpi ppi dip
- JavaScript DOM 二
- 多线程初探(四)
- iOS多线程理解
- 有效使用目标的运动特征
- JVM并发机制的探讨——内存模型、内存可见性和指令重排序
- GCD多内核线程-之dispatch queue深入浅出
- linnx系统下修改vim配色方案
- ButterKnife参考
- spring mvc实现Restful返回xml格式数据
- oracle数据库乱码问题解决