JDK1.8之后匿名内部类访问方法中的局部变量不用加final修饰

JDK1.8之后匿名内部类访问方法中的局部变量不用加final修饰

今天在学习ThreadLocal类,在一个方法中写了一个匿名内部类,然后使用方法中的局部变量,发现不用加final修饰变量,即可使用,百度了一下,原来是jdk1.8的新特性
附上代码,可以学习一下ThreadLocal

package cn.edou.thread;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

public class Demo1 {
	@Test
	public void fun1(){
		ThreadLocal<String> tl = new ThreadLocal<String>();
		tl.set("hello");
		System.out.println(Thread.currentThread().getName());
		new Thread(){
			public void run() {
				tl.set("world");
				System.out.println(Thread.currentThread().getName());
				System.out.println(tl.get());
			}
		}.start();
		System.out.println(tl.get());
	}
	@Test
	public void fun2(){
		Map<Thread,String> map = new HashMap<Thread, String>();
		map.put(Thread.currentThread(), "hello");
		new Thread(){
			public void run() {
				System.out.println(map.get(Thread.currentThread()));
			}
		}.start();
		System.out.println(map.get(Thread.currentThread()));
	}
}
/* * ThreadLocal内部结构是Map */
class TL<T> {
	private Map<Thread,T> map = new HashMap<Thread,T>();
	public void set(T data){
		map.put(Thread.currentThread(), data);
	}
	public T get(){
		return map.get(Thread.currentThread());
	}
	public void remove(){
		map.remove(Thread.currentThread());
	}
}

    原文作者:中森明菜
    原文地址: https://blog.csdn.net/yidou120/article/details/83998431
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞