Jedisスレッドプールのコード【回転】

5677 ワード

メモ:(ネイティブi 5のテストデータ:redisスレッド実行時間:21187 ms)01 public class Demo2 { 02        03      private static JedisPool pool; 04        05      static { 06          JedisPoolConfig config = new JedisPoolConfig(); 07          config.setMaxActive( 100 ); 08          config.setMaxIdle( 20 ); 09          config.setMaxWait( 1000 ); 10          config.setTestOnBorrow( true ); 11            12          pool = new JedisPool(config, "localhost" ); 13      } 14
  15      public static void main(String[] args) { 16          Demo2 demo = new Demo2(); 17          demo.test(); 18      } 19
  20      public void test() { 21          initInsert(); 22          testThread(); 23      } 24        25      private void initInsert() { 26          Jedis jedis = pool.getResource(); 27          for ( int i= 0 ; i< 20000 ; i++) 28              jedis.set(String.valueOf(i), String.valueOf(i)); 29          pool.returnResource(jedis); 30      } 31        32      private void testThread() { 33          long begin = System.currentTimeMillis(); 34            35          Thread thread[] = new Thread[ 60 ]; 36          for ( int i= 0 ; i<thread.length; i++) { 37              thread[i] = new MyThread(); 38              thread[i].start(); 39          } 40            41          for ( int i= 0 ; i<thread.length; i++) { 42              try { 43                  thread[i].join(); 44              } catch (InterruptedException e) { 45                  e.printStackTrace(); 46              } 47          } 48            49          long end = System.currentTimeMillis(); 50          System.out.println( " :" + (end - begin) + " ms" ); 51      } 52        53      class MyThread extends Thread { 54          @Override 55          public void run() { 56              Jedis jedis = Demo2.pool.getResource(); 57              for ( int i= 0 ; i< 20000 ; i++) 58                  jedis.get(String.valueOf(i)); 59              Demo2.pool.returnResource(jedis); 60          } 61      } 62 }