         print("1 \(Thread.current)")
         let queue = DispatchQueue.init(label: "serialQueueAsync")
         queue.async {
-            for i in 0...5 {
-                print("2 i=\(i) \(Thread.current)")
-            }
-        }
-        queue.async {
-            for j in 0...5 {
-                print("2 j=\(j) \(Thread.current)")
-            }
-        }
-        print("3 \(Thread.current)")
-        
-        /*
-         并发执行。 不在主线程
+            for i in 0...100 {
+                print("2 i=\(i) \(Thread.current)") // 先打印完 i ，再打印 j
+            }
+        }
+        queue.async {
+            for j in 0...100 {
+                print("2 j=\(j) \(Thread.current)")   // 开启一条线程，所以 j 一定在 i 后面才能打印
+            }
+        }
+        print("3 \(Thread.current)")
+        
+        /*
+         
+         顺序执行， 不在主线程
          开启新线程
          
          1 <NSThread: 0x280466b00>{number = 1, name = main}

                print("2 j=\(j) \(Thread.current)")
            }
        }
        print("3 \(Thread.current)")
        
        /*
         并发执行。 不在主线程
         开启新线程
         
         1 <NSThread: 0x2800b2940>{number = 1, name = main}
         3 <NSThread: 0x2800b2940>{number = 1, name = main}
         2 i=0 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 i=1 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 i=2 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 i=3 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 i=4 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 i=5 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 j=0 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 j=1 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 j=2 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 j=3 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 j=4 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         2 j=5 <NSThread: 0x2800ece00>{number = 6, name = (null)}
         
         */
    }

         2 j=4 <NSThread: 0x28040e3c0>{number = 3, name = (null)}
         2 j=5 <NSThread: 0x28040e3c0>{number = 3, name = (null)}
         
         总结：异步串行，只会开启一条线程，顺序执行， 也就是j一定在i后面才能打印
         
         */
    }
    
