From 24335ccd95af0834b28c94cbe22ec234de26d8bb Mon Sep 17 00:00:00 2001 From: "junj2.liang" Date: Mon, 15 Aug 2022 15:39:01 +0800 Subject: [PATCH] =?UTF-8?q?check=E6=96=B9=E6=B3=95=E5=8A=A0=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sge/pool/ThreadBasedConnectPool.java | 7 ++ src/test/java/test/PrefTest.java | 64 +++++++++---------- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/sunyard/sge/pool/ThreadBasedConnectPool.java b/src/main/java/com/sunyard/sge/pool/ThreadBasedConnectPool.java index f1b2203..36cfc4d 100644 --- a/src/main/java/com/sunyard/sge/pool/ThreadBasedConnectPool.java +++ b/src/main/java/com/sunyard/sge/pool/ThreadBasedConnectPool.java @@ -12,6 +12,8 @@ import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; public class ThreadBasedConnectPool { static { @@ -28,6 +30,7 @@ public class ThreadBasedConnectPool { private PoolConfig config; public ThreadBasedConnectPool(PoolConfig config) { + Lock l = new ReentrantLock(); this.config = config; threadPool.scheduleAtFixedRate(new Runnable() { @Override @@ -62,10 +65,14 @@ public class ThreadBasedConnectPool { boolean checkRet = false; try { + l.lock(); checkRet = check(entry.getValue().getObject()); } catch (Exception e) { checkRet = false; } + finally { + l.unlock(); + } if (checkRet) { log.debug("一个链接检查未通过"); diff --git a/src/test/java/test/PrefTest.java b/src/test/java/test/PrefTest.java index 5bac877..90a585a 100644 --- a/src/test/java/test/PrefTest.java +++ b/src/test/java/test/PrefTest.java @@ -9,8 +9,7 @@ import org.junit.Assert; import java.util.ArrayList; import java.util.List; -public class PrefTest -{ +public class PrefTest { public static void main(String[] args) throws InterruptedException { // System.setProperty("com.sunyard.sydapi4j.debug", "true"); @@ -19,8 +18,8 @@ public class PrefTest try { api.SYD_Short_Connect_Ex( - new String[]{ "192.168.0.200" }, - new int[]{ 8889 }, + new String[]{"192.168.0.200"}, + new int[]{8889}, 10, 20 ); @@ -29,13 +28,13 @@ public class PrefTest // 预热 final int max = 1; - for (int i = 0; i < max; i ++) { + for (int i = 0; i < max; i++) { // shortData( api ); // batchData( api ); try { - api.SYD_SM4_ShortData( 0 , new byte[16], Consts.ECB_ENC ); + api.SYD_SM4_ShortData(0, new byte[16], Consts.ECB_ENC); // api.SYD_SM4_ShortData( 0 , new byte[16], Consts.ECB_DEC ); - } catch ( Exception e ){ + } catch (Exception e) { } @@ -47,16 +46,16 @@ public class PrefTest public void run() { // 短数据 long st = System.currentTimeMillis(); - shortData( api ); + shortData(api); long et = System.currentTimeMillis(); - System.out.println("short t1=" + ( et -st )); + System.out.println("short t1=" + (et - st)); // 批量 st = System.currentTimeMillis(); - batchData( api ); + batchData(api); et = System.currentTimeMillis(); - System.out.println("batch t1=" + ( et -st )); + System.out.println("batch t1=" + (et - st)); } }); @@ -69,54 +68,55 @@ public class PrefTest // 短数据 long st = System.currentTimeMillis(); - shortData( api ); + shortData(api); long et = System.currentTimeMillis(); - System.out.println("short t1=" + ( et -st )); - + System.out.println("short t1=" + (et - st)); // 批量 st = System.currentTimeMillis(); - batchData( api ); + batchData(api); et = System.currentTimeMillis(); - System.out.println("batch t1=" + ( et -st )); + System.out.println("batch t1=" + (et - st)); } finally { - if ( null != api ) { + if (null != api) { api.SYD_Disconnect_Ex(); } } } - public static void shortData(SydApi api){ + public static void shortData(SydApi api) { // 密钥索引 int keyIdx = 0; // 测试数据 byte[] data = new byte[16]; byte[] encData = new byte[16]; try { - encData = api.SYD_SM4_ShortData( keyIdx , data, Consts.ECB_ENC ); - }catch ( Exception e){} + encData = api.SYD_SM4_ShortData(keyIdx, data, Consts.ECB_ENC); + } catch (Exception e) { + } try { - byte[] orgData = api.SYD_SM4_ShortData( keyIdx , encData, Consts.ECB_DEC ); - }catch ( Exception e){} + byte[] orgData = api.SYD_SM4_ShortData(keyIdx, encData, Consts.ECB_DEC); + } catch (Exception e) { + } // System.out.println( "HEX=" + Util.bytes2HexString( encData ) ); // Assert.assertArrayEquals( orgData, data ); } - public static void batchData(SydApi api){ + public static void batchData(SydApi api) { // 密钥索引 - int[] keyIdx = new int[]{ 0, 1, 2 }; + int[] keyIdx = new int[]{0, 1, 2}; // 测试数据 List data = new ArrayList<>(); - data.add( new byte[8] ); - data.add( new byte[16] ); - data.add( new byte[1024] ); + data.add(new byte[8]); + data.add(new byte[16]); + data.add(new byte[1024]); - List encData = api.SYD_SM4_BatchData( keyIdx , data, Consts.ECB_ENC ); - List orgData = api.SYD_SM4_BatchData( keyIdx , encData, Consts.ECB_DEC ); + List encData = api.SYD_SM4_BatchData(keyIdx, data, Consts.ECB_ENC); + List orgData = api.SYD_SM4_BatchData(keyIdx, encData, Consts.ECB_DEC); - for ( int i = 0 ; i < data.size() ; i++ ) { - System.out.println( "HEX=" + Util.bytes2HexString( encData.get( i ) ) ); - Assert.assertArrayEquals( orgData.get( i ), data.get( i ) ); + for (int i = 0; i < data.size(); i++) { + System.out.println("HEX=" + Util.bytes2HexString(encData.get(i))); + Assert.assertArrayEquals(orgData.get(i), data.get(i)); } }