少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
          //ThreadLocal第一種用法:

          //建表:
          -- Create table
          create table USERBEAN
          (
            ID       NVARCHAR2(40) not null,
            USERNAME NVARCHAR2(40),
            PASSWORD NVARCHAR2(40)
          )
          tablespace USERS
            pctfree 10
            initrans 1
            maxtrans 255
            storage
            (
              initial 64K
              minextents 1
              maxextents unlimited
            );
          -- Create/Recreate primary, unique and foreign key constraints 
          alter table USERBEAN
            add constraint SSSID primary key (ID)
            using index 
            tablespace USERS
            pctfree 10
            initrans 2
            maxtrans 255
            storage
            (
              initial 64K
              minextents 1
              maxextents unlimited
            );





          package com.abin.lee.collection.threadlocal;
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.SQLException;
          public class MyThreadLocal {
          //使用ThreadLocal保存Connection變量
          public static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();
          private static final String URL = "jdbc:oracle:thin:@localhost:1521:XE";
          private static final String USERNAME = "abing";
          private static final String PWD = "abing";
          public static Connection getConnection() {
          Connection connection = null;
          String url = "";
          //如果connThreadLocal沒有本線程對應的Connection創建一個新的Connection,并將其保存到線程本地變量中。
          if (threadLocal.get() == null) {
          try {
          Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
          connection = DriverManager.getConnection(URL, USERNAME, PWD);
          threadLocal.set(connection);
          } catch (Exception e) {
          e.printStackTrace();
          }
          }else {
          return threadLocal.get();//直接返回線程本地變量
          }
          return connection;
          }
          public static void remove() {
          threadLocal.remove();
          }
          }




          package com.abin.lee.collection.threadlocal;
          import java.io.Serializable;
          public class UserBean implements Serializable{
          private String id;
          private String username;
          private String password;
          public String getId() {
          return id;
          }
          public void setId(String id) {
          this.id = id;
          }
          public String getUsername() {
          return username;
          }
          public void setUsername(String username) {
          this.username = username;
          }
          public String getPassword() {
          return password;
          }
          public void setPassword(String password) {
          this.password = password;
          }
          }





          //測試代碼
          package com.abin.lee.collection.threadlocal;
          import java.sql.Connection;
          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.util.ArrayList;
          import java.util.List;
          public class OracleOperate {
          public static List<UserBean> findAll(){
          Connection conn=null;
          PreparedStatement ps=null;
          ResultSet rs=null;
          String sql="select * from userbean order by id desc";
          List<UserBean> list=new ArrayList<UserBean>();
          UserBean user=null;
          try {
          conn=MyThreadLocal.getConnection();
          ps=conn.prepareStatement(sql);
          rs=ps.executeQuery();
          while (rs.next()&&rs!=null) {
          user=new UserBean();
          user.setId(rs.getString("id"));
          user.setUsername(rs.getString("username"));
          user.setPassword(rs.getString("password"));
          list.add(user);
          }
          } catch (Exception e) {
          e.printStackTrace();
          }
          return list;
          }
          public static void main(String[] args) {
          List<UserBean> list=findAll();
          for(UserBean lst:list){
          System.out.println("id="+lst.getId());
          System.out.println("username="+lst.getUsername());
          System.out.println("id="+lst.getPassword());
          }
          }
          }










          //ThreadLocal第二種用法: 
          package com.abin.lee.collection.threadlocal;
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.SQLException;
          public class MyThreadLocal {
          private static final String URL = "jdbc:oracle:thin:@localhost:1521:XE";
          private static final String USERNAME = "abing";
          private static final String PWD = "abing";
          //使用ThreadLocal保存Connection變量
          public static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>(){
          protected Connection initialValue() {
          Connection connection = null;
          //如果connThreadLocal沒有本線程對應的Connection創建一個新的Connection,并將其保存到線程本地變量中。
          if (connection == null) {
          try {
          Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
          connection = DriverManager.getConnection(URL, USERNAME, PWD);
          } catch (Exception e) {
          e.printStackTrace();
          }
          }
          return connection;
          }
          };
          public static Connection getConnection() {
          return threadLocal.get();
          }
          public static void remove() {
          threadLocal.remove();
          }
          }




          package com.abin.lee.collection.threadlocal;
          import java.io.Serializable;
          public class UserBean implements Serializable{
          private String id;
          private String username;
          private String password;
          public String getId() {
          return id;
          }
          public void setId(String id) {
          this.id = id;
          }
          public String getUsername() {
          return username;
          }
          public void setUsername(String username) {
          this.username = username;
          }
          public String getPassword() {
          return password;
          }
          public void setPassword(String password) {
          this.password = password;
          }
          }






          package com.abin.lee.collection.threadlocal;
          import java.sql.Connection;
          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.util.ArrayList;
          import java.util.List;
          public class OracleOperate {
          public static List<UserBean> findAll(){
          Connection conn=null;
          PreparedStatement ps=null;
          ResultSet rs=null;
          String sql="select * from userbean order by id desc";
          List<UserBean> list=new ArrayList<UserBean>();
          UserBean user=null;
          try {
          conn=MyThreadLocal.getConnection();
          ps=conn.prepareStatement(sql);
          rs=ps.executeQuery();
          while (rs.next()&&rs!=null) {
          user=new UserBean();
          user.setId(rs.getString("id"));
          user.setUsername(rs.getString("username"));
          user.setPassword(rs.getString("password"));
          list.add(user);
          }
          } catch (Exception e) {
          e.printStackTrace();
          }
          return list;
          }
          public static void main(String[] args) {
          List<UserBean> list=findAll();
          for(UserBean lst:list){
          System.out.println("id="+lst.getId());
          System.out.println("username="+lst.getUsername());
          System.out.println("id="+lst.getPassword());
          }
          }
          }
          posted on 2012-09-01 17:03 abin 閱讀(455) 評論(0)  編輯  收藏 所屬分類: JavaMultithread
          主站蜘蛛池模板: 阜新市| 阿城市| 南投县| 潍坊市| 石景山区| 马尔康县| 甘南县| 天柱县| 乌苏市| 凌源市| 浦城县| 高唐县| 横山县| 沽源县| 万年县| 桐柏县| 益阳市| 汨罗市| 东安县| 韶关市| 松江区| 论坛| 抚宁县| 仲巴县| 惠来县| 黄梅县| 河曲县| 张北县| 普格县| 虹口区| 白水县| 微山县| 盘山县| 山丹县| 凌源市| 青阳县| 聂荣县| 屯留县| 阳高县| 卢湾区| 苏尼特左旗|