Я создал один поток с параметрами java.sql.Connection и String. Но изнутри потока я заметил, что значение String доступно, но объект Connection не был. Любые подсказки?java.sql.Connection не видно изнутри потока
(Редактирование детали в вопросе):
Ну, кажется, что объект подключения доступен, но закрыт внутри нити. Вот код:
package com.catgen.helper;
import java.sql.Connection;
public class ImageCheckHelper extends Thread{
public Connection conn = null;
public String str = null;
public ImageCheckHelper(Connection conn, String str){
this.conn = conn;
this.str = str;
try{
System.out.println("From inside the constructor");
System.out.println((this.conn!=null)?"Connection is not null":"Connection is null");
System.out.println((this.str!=null)?"String is not null":"String is null");
System.out.println((this.conn.isClosed())?"Connection is closed.":"Connection is not closed");
System.out.println("\n\n");
}catch(Exception e){
e.printStackTrace();
}
}
public void run(){
try{
System.out.println("From inside the thread");
System.out.println((conn!=null)?"Connection is not null":"Connection is null");
System.out.println((str!=null)?"String is not null":"String is null");
System.out.println((conn.isClosed())?"Connection is closed.":"Connection is not closed");
}catch(Exception e){
e.printStackTrace();
}
}
public void initiateImageCheck(){
this.start();
return;
}
}
И вот результат:
From inside the constructor
Connection is not null
String is not null
Connection is not closed
From inside the thread
Connection is not null
String is not null
Connection is closed.
Не без вас какой-либо код, нет ... –
Остерегайтесь того, что объекты JDBC, такие как 'Connection',' Statement', 'ResultSet' и т. Д., Вообще не являются потокобезопасными; не используйте эти объекты из нескольких потоков одновременно. Если у вас есть несколько потоков, обращающихся к одной и той же базе данных одновременно, каждому потоку потребуется отдельное соединение. – Jesper
Большое спасибо Jesper. – James