Hi, friends.

 I am using HttpClient for a few tests. And I use the below code to run without 
success. But the process never stoped. 
I use jstack for this and found it always wait for something. Could you help me 
please ? Thanks.

parking to wait for <0x000000076c1d0980> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

Best
Minglei

public class HttpClientWithSync {

   public static void main(String[] args) {

      String url = "https://www.baidu.com/";;

      String[] strs = new String[] {url, url, url};

      CloseableHttpClient httpclient = HttpClients.createDefault();

      for (int i = 0; i < 3; i++) {
         HttpGet httpget = new HttpGet(strs[i]);
         System.out.println();
         try {
            System.out.println("Waiting for the contents, hurry! hurry ! 
hurry!.....");

            // take a while and block the main thread.
            HttpResponse response = httpclient.execute(httpget);

            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
               System.out.println("============ Get the entity ============ "+ 
response.getEntity());
            }
            // after getting the value from the url and then do this or do not 
if something unexpected to happen.
            System.out.println("Do some other stuff");
         } catch (IOException e) {
            e.printStackTrace();
         }
      }
      try {
         httpclient.close();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}


The full thread dump are

2018-06-08 11:02:08
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.161-b12 mixed mode):

"Attach Listener" #12 daemon prio=9 os_prio=31 tid=0x00007fce8904a000 
nid=0x1207 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Service Thread" #10 daemon prio=9 os_prio=31 tid=0x00007fce8c04b800 nid=0x5503 
runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread3" #9 daemon prio=9 os_prio=31 tid=0x00007fce8c002800 
nid=0x5303 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" #8 daemon prio=9 os_prio=31 tid=0x00007fce89084000 
nid=0x5103 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #7 daemon prio=9 os_prio=31 tid=0x00007fce8c002000 
nid=0x4f03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #6 daemon prio=9 os_prio=31 tid=0x00007fce8c001000 
nid=0x4d03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Monitor Ctrl-Break" #5 daemon prio=5 os_prio=31 tid=0x00007fce8a83b800 
nid=0x4b03 runnable [0x0000700007e38000]
   java.lang.Thread.State: RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
   at java.net.SocketInputStream.read(SocketInputStream.java:171)
   at java.net.SocketInputStream.read(SocketInputStream.java:141)
   at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
   at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
   at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
   - locked <0x000000076adce880> (a java.io.InputStreamReader)
   at java.io.InputStreamReader.read(InputStreamReader.java:184)
   at java.io.BufferedReader.fill(BufferedReader.java:161)
   at java.io.BufferedReader.readLine(BufferedReader.java:324)
   - locked <0x000000076adce880> (a java.io.InputStreamReader)
   at java.io.BufferedReader.readLine(BufferedReader.java:389)
   at com.intellij.rt.execution.application.AppMainV2$1.run(AppMainV2.java:64)

"Signal Dispatcher" #4 daemon prio=9 os_prio=31 tid=0x00007fce8881c000 
nid=0x4903 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=31 tid=0x00007fce89003800 nid=0x3903 in 
Object.wait() [0x0000700007c32000]
   java.lang.Thread.State: WAITING (on object monitor)
   at java.lang.Object.wait(Native Method)
   - waiting on <0x000000076ab08ec0> (a java.lang.ref.ReferenceQueue$Lock)
   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
   - locked <0x000000076ab08ec0> (a java.lang.ref.ReferenceQueue$Lock)
   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
   at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" #2 daemon prio=10 os_prio=31 tid=0x00007fce8b004000 
nid=0x3703 in Object.wait() [0x0000700007b2f000]
   java.lang.Thread.State: WAITING (on object monitor)
   at java.lang.Object.wait(Native Method)
   - waiting on <0x000000076ab06b68> (a java.lang.ref.Reference$Lock)
   at java.lang.Object.wait(Object.java:502)
   at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
   - locked <0x000000076ab06b68> (a java.lang.ref.Reference$Lock)
   at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

"main" #1 prio=5 os_prio=31 tid=0x00007fce8a008000 nid=0x1c03 waiting on 
condition [0x0000700007110000]
   java.lang.Thread.State: WAITING (parking)
   at sun.misc.Unsafe.park(Native Method)
   - parking to wait for  <0x000000076c1d0980> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
   at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
   at 
org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:377)
   at org.apache.http.pool.AbstractConnPool.access$200(AbstractConnPool.java:67)
   at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:243)
   - locked <0x000000076d160008> (a org.apache.http.pool.AbstractConnPool$2)
   at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:191)
   at 
org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:282)
   at 
org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:269)
   at 
org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:191)
   at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
   at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
   at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
   at 
org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
   at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
   at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
   at 
org.apache.flink.streaming.connectors.fs.HttpClientWithSync.main(HttpClientWithSync.java:37)

"VM Thread" os_prio=31 tid=0x00007fce88819000 nid=0x3503 runnable 

"GC task thread#0 (ParallelGC)" os_prio=31 tid=0x00007fce8a014000 nid=0x2503 
runnable 

"GC task thread#1 (ParallelGC)" os_prio=31 tid=0x00007fce8a014800 nid=0x2703 
runnable 

"GC task thread#2 (ParallelGC)" os_prio=31 tid=0x00007fce89004800 nid=0x2903 
runnable 

"GC task thread#3 (ParallelGC)" os_prio=31 tid=0x00007fce88800800 nid=0x2b03 
runnable 

"GC task thread#4 (ParallelGC)" os_prio=31 tid=0x00007fce88808800 nid=0x2d03 
runnable 

"GC task thread#5 (ParallelGC)" os_prio=31 tid=0x00007fce88809000 nid=0x2f03 
runnable 

"GC task thread#6 (ParallelGC)" os_prio=31 tid=0x00007fce89005800 nid=0x3103 
runnable 

"GC task thread#7 (ParallelGC)" os_prio=31 tid=0x00007fce89006000 nid=0x3303 
runnable 

"VM Periodic Task Thread" os_prio=31 tid=0x00007fce888c7000 nid=0x5703 waiting 
on condition 

JNI global references: 364


Reply via email to