关于java方法多线程访问自己的理解
2009-08-13 10:42
681 查看
方法体应该是随着类创建的,因此应该在代码区
因此线程对象访问这个方法体的时候,每一个线程对象都是一个cpu 都会纪录当前执行到那里,例如两个线程对象执行下列行数
public void runA()
{
for(int i=0;i<100;i++)
{
system.out.println(i.tostring());
}
}
线程对象A,B 同时进行运行,A执行到 int i=0 并不会影响到B 执行 int i=0 也就是说 A执行过了 i++,并不会让 B的i 变成1;因为他们都有程序运行时候的标记,记录上一次运行时候的变量状态,不会混乱。
但是对于公共变量例如 有一个类的全局变量
public static int count;
public void runA()
{
for(int i=0;i<100;i++)
{
count++;
system.out.println(i.tostring());
}
}
这里 count 就需要进行线程同步,因为这个变量是全局的 谁都可以去更改,如果想不影响到自己,那么就要索住它。
分析线程是否需要同步,就要看是否有多个线程会访问到公共资源。
因此线程对象访问这个方法体的时候,每一个线程对象都是一个cpu 都会纪录当前执行到那里,例如两个线程对象执行下列行数
public void runA()
{
for(int i=0;i<100;i++)
{
system.out.println(i.tostring());
}
}
线程对象A,B 同时进行运行,A执行到 int i=0 并不会影响到B 执行 int i=0 也就是说 A执行过了 i++,并不会让 B的i 变成1;因为他们都有程序运行时候的标记,记录上一次运行时候的变量状态,不会混乱。
但是对于公共变量例如 有一个类的全局变量
public static int count;
public void runA()
{
for(int i=0;i<100;i++)
{
count++;
system.out.println(i.tostring());
}
}
这里 count 就需要进行线程同步,因为这个变量是全局的 谁都可以去更改,如果想不影响到自己,那么就要索住它。
分析线程是否需要同步,就要看是否有多个线程会访问到公共资源。
相关文章推荐
- 关于java中的 sychronized 同步方法 与 同步块的理解
- 深入理解为什么Java中方法内定义的内部类可以访问方法中的局部变量
- 有关于java文件的相关方法的使用的理解。
- java中关于构造器构造函数构造方法重载方法的理解
- 关于在做java的Web开发中遇到跨域访问的问题的解决方法汇总
- 关于Java两种同步方法的理解(代码块级同步对象设置)
- JAVA中关于set()和get()方法的理解及使用
- Java基础(高级)——多线程的理解和Synchronized实例,以及线程间通信,wait,notify等方法
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Java中关于Arrays.asList方法的深入学习与理解
- java 多线程 Synchronized方法和方法块 synchronized(this)和synchronized(object)的理解
- 深入理解为什么Java中方法内定义的内部类可以访问方法中的局部变量
- JAVA中关于set()和get()方法的理解及使用
- 初学加瓦系列:关于java中多线程的理解
- Java多线程中join方法的理解
- 关于在适配器中更新ui的方法(写这个东西只是为了自己理解,不要看,大家看不懂)
- Java【多线程知识总结(7)】多线程同步问题-关于synchronized代码块和synchronized方法的应用
- java多线程之-----对象及变量的并发访问1(synchronized同步方法)
- JAVA中关于set()和get()方法的理解及使用