如何判断多个线程是否共享资源
来源:互联网 发布:ug编程软件下载 编辑:程序博客网 时间:2024/05/08 23:39
在一个程序中有多个线程,如何确定线程间操作的是不是一个资源(变量,内存)?
看不同的线程是否指向的同一个对象,如下图:
注意:Java中使用地址判断对象是否为同一个对象。地址相同就是同一个对象
<span style="font-family:FangSong_GB2312;font-size:18px;">import org.junit.Test;public class Test1 {@Testpublic void pub() {// 建立三个不同的线程,同时修改num中的i变量MyNum num = new MyNum();AddNum add1, add2, add3;add1 = new AddNum(num);add2 = new AddNum(num);add3 = new AddNum(num);add1.start();add2.start();add3.start();}}class MyNum {int number = 0; // 定义个计数器String type = "整形";}class AddNum extends Thread {MyNum my = new MyNum();public AddNum(MyNum myNum) {// TODO Auto-generated constructor stubmy = myNum; // 因为myNum是一个类,在传值和赋值是都是传递的地址}public synchronized void addMethod() { // synchronized修饰保证一个线程修改number。my.number++;System.out.println(my.number);}public void run() {while (true) {this.addMethod();}}}</span>注意:
如果把上面的例子中传递对象实例换成基本数据类型(int,byte,……)是不行的。因为基本数据类型赋值时传递的不是对象地址,而是新建一个基本类型然后赋值。也就是线程不能指向同意对象了。
0 0
- 如何判断多个线程是否共享资源
- 如何判断一个线程是否正在执行
- 如何判断是否开启超线程
- 如何判断是否开启超线程
- 线程学习之多个线程对共享资源做不同操作
- C#中如何判断当前线程是否为主线程
- C#中如何判断当前线程是否为主线程
- 判断线程是否释放
- 判断线程是否释放
- Java如何判断线程池所有任务是否执行完毕
- Java如何判断线程池所有任务是否执行完毕
- Java如何判断线程池所有任务是否执行完毕
- Java 如何判断线程池所有任务是否执行完毕
- Java如何判断线程池所有任务是否执行完毕
- Java 如何判断线程池所有任务是否执行完毕
- Java 如何判断线程池所有任务是否执行完毕
- Android 如何判断当前线程是否是主线程
- Java 如何判断线程池所有任务是否执行完毕
- jsp中用EL读取了数据库里面的时间,怎么设置格式显示的格式
- Photoshop Gradients File Format
- 二维码生成原理
- Vector用法介绍总结
- HDU 1075What Are You Talking About (字符串处理)
- 如何判断多个线程是否共享资源
- joomla学习笔记-备份与还原
- (六)zookeeper 可视化界面zkui
- 使用flume问题总结2——flume event的简单理解
- 防止粘包的read write函数
- MFC 多语言 本地化
- Java学习之Iterator(迭代器)的一般用法
- C#
- Fourier Transform Intro - Oscillation frequency vs Angular frequency Expression