java在方法中的匿名内部类
来源:互联网 发布:淘宝店铺名字旗舰店 编辑:程序博客网 时间:2024/06/05 21:57
考虑在方法public void method(final int value)中有一个匿名内部线程执行耗时操作,内部线程较长时间后可能会用到value。当在一个循环多次重复调用method时,会有很多的线程,这些线程用到value的顺序不定,是否会取到正确的value的值?为了测试,构建了如下类:
package com.landon.test;import java.util.logging.Logger;/** * 匿名内部类中获得的外部函数中的变量是否因为外部函数的多次调用而改变 * @author xu * */public class TestClass { public void test(final long key){ new Thread(new Runnable() { @Override public void run() { long key0 = key; for(long i= 0; i < key ; ++i){ key0 *= key; key0 += key; key0 -= key; key0 /= key; } print(key,key0); } }).start(); System.out.println("当前key值:" + key); } public static void print(long key,long key0){ System.out.println(Thread.currentThread().getName() + "取到的key值:" + key); key0 = key; }}
当在一个循环中多次调用test方法时:
TestClass testClass = new TestClass(); for(int i = 1; i < 1000; ++i){ testClass.test(i); }
会出现如下的结果:
从运行结果来看,每个线程都正确无误地取到了自己的值,而不受当前执行到的方法test(final long key)中的key值的影响,验证完毕。
推测:在进入方法test中时,方法中的参数被入栈,匿名内部类能够从栈中获取。
0 0
- java在方法中的匿名内部类
- JAVA中的内部类--匿名内部类
- JAVA中的四个内部类-成员内部类,静态内部类,方法内部类,匿名内部类
- Java中的匿名内部类
- java中的匿名内部类
- Java中的匿名内部类
- java中的匿名内部类
- java中的匿名内部类
- Java中的匿名内部类
- java中的匿名内部类
- java中的匿名内部类
- java中的匿名内部类
- java中的匿名内部类
- java 中的匿名内部类
- java中的匿名内部类
- JAVA中的匿名内部类
- java中的匿名内部类
- JAVA中的匿名内部类
- windows下mongodb安装
- 前端面试整理********************************************************
- 字典树讲解
- 经典的”服务器最多65536个连接”误解
- 内涵段子02
- java在方法中的匿名内部类
- win10 UWP 你写我读
- IOS .pch 文件详解
- 1028. List Sorting (25)
- extjs 之 grid篇
- nginx1.6 centos6.5 安装配置
- 评委打分
- Markdown中插入数学公式的方法
- 线代理解