求教这段代码为何输出null

package com.transaction;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBUtil {
private DBUtil(){}
static ThreadLocal<Connection>local;
static void init(){
try {
local = new ThreadLocal<>();
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newworld" , "root" , "root");
local.set(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
return local.get();
}
public static void returnConnection(Connection conn){
local.set(conn);
}
public static void main(String[] args) {
init();
for(int i=0;i<10;i++){
new Thread(){
public void run(){
Connection connection = getConnection();
System.out.println(connection);
}
}.start();
}
System.out.println(getConnection());
}
}
正在自学threadlocal,想写一个小程序练练手。具体代码见上,奇怪的是10次循环里输出的都是null,而循环外面输出不为null,请问这是怎么回事

--来自网页客户端
已邀请:

idehub1 - 暂无简介

赞同来自: Lucky_zjj

因为你每次都新起了一个线程, 所以ThreadLocal中始终是null...

--来自网页客户端

cgf - 2013年九月入职,成为一名Java程序员。

赞同来自: Lucky_zjj

建议把这个显示效果换成代码风格的,要不然看这个代码,晕死

--来自网页客户端

idehub1 - 暂无简介

赞同来自:

可以呀,以后站内优化慢慢做好了就可以达到你想要的目的,所以常来看看,会看到意想不到的东西。。

--来自网页客户端

要回复问题请先登录注册

Template error, template file not found