From 57ebc8011356a811af1541ca8135d0f279b2e177 Mon Sep 17 00:00:00 2001 From: Guide Date: Thu, 20 Apr 2023 15:57:22 +0800 Subject: [PATCH] =?UTF-8?q?[docs=20update]=E7=BB=9F=E4=B8=80Java=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=9A=84=E6=89=8B=E7=BB=98=E5=9B=BE=E7=89=87=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- docs/home.md | 2 +- .../images/java7_concurrenthashmap.drawio | 1 - .../images/java8_concurrenthashmap.drawio | 1 - .../collection/images/jdk1.7_hashmap.drawio | 1 - .../collection/images/jdk1.8_hashmap.drawio | 1 - .../synchronized-get-lock-code-block.drawio | 1 - .../synchronized-release-lock-block.drawio | 1 - .../threadlocal-data-structure.drawio | 1 - .../图解线程池实现原理.png | Bin 4758 -> 0 bytes .../images/jmm/.$cpu-cache-protocol.drawio.bkp | 1 - .../images/jmm/.$cpu-cache.drawio.bkp | 1 - .../images/jmm/cpu-cache-protocol.drawio | 1 - .../java/concurrent/images/jmm/cpu-cache.drawio | 1 - docs/java/concurrent/images/jmm/jmm.drawio | 1 - docs/java/concurrent/images/jmm/jmm2.drawio | 1 - .../1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png | Bin 8327 -> 0 bytes ...-accident-threadpool-sharing-deadlock.drawio | 1 - .../java/concurrent/java-thread-pool-summary.md | 14 +++----------- docs/system-design/basis/unit-test.md | 16 +++++++++++++++- 20 files changed, 20 insertions(+), 28 deletions(-) delete mode 100644 docs/java/collection/images/java7_concurrenthashmap.drawio delete mode 100644 docs/java/collection/images/java8_concurrenthashmap.drawio delete mode 100644 docs/java/collection/images/jdk1.7_hashmap.drawio delete mode 100644 docs/java/collection/images/jdk1.8_hashmap.drawio delete mode 100644 docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.drawio delete mode 100644 docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.drawio delete mode 100644 docs/java/concurrent/images/interview-questions/threadlocal-data-structure.drawio delete mode 100644 docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png delete mode 100644 docs/java/concurrent/images/jmm/.$cpu-cache-protocol.drawio.bkp delete mode 100644 docs/java/concurrent/images/jmm/.$cpu-cache.drawio.bkp delete mode 100644 docs/java/concurrent/images/jmm/cpu-cache-protocol.drawio delete mode 100644 docs/java/concurrent/images/jmm/cpu-cache.drawio delete mode 100644 docs/java/concurrent/images/jmm/jmm.drawio delete mode 100644 docs/java/concurrent/images/jmm/jmm2.drawio delete mode 100644 docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png delete mode 100644 docs/java/concurrent/images/thread-pool/production-accident-threadpool-sharing-deadlock.drawio diff --git a/README.md b/README.md index 9154fb18..2df66d2e 100755 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle **知识点/面试题总结** : - [计算机网络常见知识点&面试题总结(上)](./docs/cs-basics/network/other-network-questions.md) -- - [计算机网络常见知识点&面试题总结(下)](./docs/cs-basics/network/other-network-questions2.md) +- [计算机网络常见知识点&面试题总结(下)](./docs/cs-basics/network/other-network-questions2.md) - [谢希仁老师的《计算机网络》内容总结(补充)](./docs/cs-basics/network/computer-network-xiexiren-summary.md) **重要知识点详解** : diff --git a/docs/home.md b/docs/home.md index db1853e1..fbae8ef2 100644 --- a/docs/home.md +++ b/docs/home.md @@ -143,7 +143,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle **知识点/面试题总结** : - [计算机网络常见知识点&面试题总结(上)](./cs-basics/network/other-network-questions.md) -- - [计算机网络常见知识点&面试题总结(下)](./cs-basics/network/other-network-questions2.md) +- [计算机网络常见知识点&面试题总结(下)](./cs-basics/network/other-network-questions2.md) - [谢希仁老师的《计算机网络》内容总结(补充)](./cs-basics/network/computer-network-xiexiren-summary.md) **重要知识点详解** : diff --git a/docs/java/collection/images/java7_concurrenthashmap.drawio b/docs/java/collection/images/java7_concurrenthashmap.drawio deleted file mode 100644 index 1f892650..00000000 --- a/docs/java/collection/images/java7_concurrenthashmap.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/java/collection/images/java8_concurrenthashmap.drawio b/docs/java/collection/images/java8_concurrenthashmap.drawio deleted file mode 100644 index 70f4fcab..00000000 --- a/docs/java/collection/images/java8_concurrenthashmap.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/java/collection/images/jdk1.7_hashmap.drawio b/docs/java/collection/images/jdk1.7_hashmap.drawio deleted file mode 100644 index c1b68e4c..00000000 --- a/docs/java/collection/images/jdk1.7_hashmap.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vtdj5s4FP01fmwVPgOPIWGmW7WraqfStn1zwAE6DqaOM0n66/dCTAiBzsAqDGiCEin2tbHxPec69sEgbb7e33OchJ+ZTyhSJ/4eaQukqooyMeEntRyOFtueHg0Bj3xZqTA8RL+JNE6kdRv5ZFOqKBijIkrKRo/FMfFEyYY5Z7tytRWj5V4THJCK4cHDtGr9N/JFmI/LtIuCDyQKwrxr09CPJWuc15ZD2YTYZ7szk+Yibc4ZE8fUej8nNPVe7pjjdXd/KD3dGSexaHKB6X35oH2m0e/I/PvHXz+0ydcv39/JVp4w3coRy5sVh9wFcN9JmhR4mZqcUKwpZBVI7sJIkIcEe2n5DhgAto3AXEggJ5AHZASOYsLlNR6jFCebKGvsWCOMqP8JH9hW5N3kOWfzSIQXyoqriNI5o4xnN6b5mFgrL+uSs0dyVmJ6FlmuoISzbewTX3Zd9Vg+fMIF2Z+ZpAfvCVsTwQ9QRZaqtkRT8lmbyvyuYIcpTeEZL9SJNGJJyODUdAEZJCRqLRBUmyMIIxcRpv9AoOA4aAJmFSyfs+Qr5gER0pCwKBaEu0/g1E0NUDGL044ES2QhJav82iUTgq1lhktvnRrNPGU48AXfzSfvDWTAaOaQV4o8fNPqXMxZDDwApqVtELwRO7KpMKjKgGej4mVavAC73hXqWreoZ5MpLlBn4IoVzWavMPJ9El8D5P+DjDp4ZPQxHnuMx0MZ3b5IYNxoeOqNgeoLGXMMz/7D0+o5PKc3Gp5mY6D6QsYaw7P/8FTUnuPTvtH4tBoj1RcyuS4zBmivAWr2HKBKC93oTUXoif8DDtE6RcikKTlXDAZ3DpL5a8vygnebTLSbQQXFSvZFIaSC7Nc1kW0gCA93ihwHWXreLtznsWlZ8ZIK4CpRhr0s2Un4ahDFNAoA7IVH0qgHQ+r4yMN0JgvWQIeMU3VEKuS/Bni31gK1XNPLtUCtGpV6DfJqZ8i3UIV6UXPLcmxFtvWn9nJSI/SuVsT0vA4Q1NULBGvU3NNi6HWCd5SPOvh/1RoToz/gb1UyUoavGSkdi0ZvAZt9GZfenosoFWSIH5AHmYWJJWQBizF1C+vFMqGo84llHk6B+0mEOMj/QbwVrAwreJEfvsnrs8z3NANTmswu9ueFi0OrFcmGbblHnhm0pKfI5/E/win31alHngWTE4pF9ERKt3H9JyW3iJXaFCt9UFgpLSSZcWlZs7TUjerMWLs76GxqVEfppoOlpd2YGP0Bf6tijTp8sSaHYsRm8EtL9WbP3LSGqvcHSGrHMspbwqrvh/FqC+VjXFrWLC2NGt35hOrrQDieqrn+0vIUF+1Uy9cF/lZP0qjDP0qjdnyW5i1gM5Sl5a0eeGkPVe9LS70KzSuolldSH/PjCy/Kj/mfz0DkR71u73WdMw02sjXkuMi10ExBM+u2zzRUnoj3faZBr9nJuQayDDSbI1dHzhzZ08xyhxxI3GWW2Uf8hO/TdwdzOJe8EUlMIEnGjgpPpshZIFtJEzMH2fapq5/QVfaa4nsvHihLKF4S6mDvMcjsl52DD+TEo5gyf7aPcbJP1qaAUGdxHfVOLzdeiYeGfsFDy6jucaY1RFTaExGyxVuYWdnZy6ya+x8= \ No newline at end of file diff --git a/docs/java/collection/images/jdk1.8_hashmap.drawio b/docs/java/collection/images/jdk1.8_hashmap.drawio deleted file mode 100644 index 69c0eb52..00000000 --- a/docs/java/collection/images/jdk1.8_hashmap.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.drawio b/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.drawio deleted file mode 100644 index eebb1a94..00000000 --- a/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.drawio b/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.drawio deleted file mode 100644 index 82fd95a0..00000000 --- a/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vpbk5s2FP41mmkfvMMd8Qhe73Y6SZPOzrTpowwCkwXkCOy18+srCYGNwDbeeO2dNuMHi6Oj2/mOzg2AOc03jxQtFx9JhDNgaNEGmPfAMHRdc9gfp2xriue5NSGhaSSZdoSn9DuWRE1SV2mEyw5jRUhWpcsuMSRFgcOqQ0OUkpcuW0yy7qpLlOAe4SlEWZ/6dxpVi5oKDXdH/w2nyaJZWXe8uidHDbM8SblAEXnZI5kzYE4pIVXdyjdTnHHhNXKpxz0c6G03RnFRjRmQrCYJWj+Z2Z9ftLX3l5HrSTwx61nWKFvJAwPDydh8QblEBZdrhspahM63Fd9qkEeTZYZS3smaeMP4ol0vP2i1ldJriHOymZTp97RIgOkzjjmhEaYTRq5HhCQjtO6iyfwXm4lwytqO/HfhrzVfTIpqEqM8zbaSm8xJRWquEhXlpMQ0jfeYS6FQnFV3lvVqu506ififOQB6wHfBDAJfB3DaiIDJspaCZOxKplwy+YYLHD53zhqjrMQdeQyLEKV0Uv5nZChFE7L7/6rdL1EUtZ3anWFTnIuWaBzdSzMXRVG6KtsZmnHqVnNSpBWheJNWezjXG+8epge/0TmaQcmqiDC/XTrrflmkFX5aopD3vjBjyGiLKs9kd3v7Nf7wjKtwIR/iNMumNXhsVjOOYyMMOVNFyTPe64mcuWM7fASThLSUutPubN8SSOOwxrTCmz2StAyPmOS4olvGInsNz6qHSDNtNlbrZWf0dFfa8sWewXMkH5J2Nmmn3pki1pDW6AzL5PTkjSNmmeUjodWCJKRA2WxHDXaIcMHueD4QspQ4fMVVtZXCQyum92NRGivzkqxoiI8cDNZ8/DRHkaE4Q1W67vqhITHLoZ9JyrbSImpCo4OoaypIVYgmuJKjFLDabbweP/cW+DEw6PYLH3/nCpgE4R85oXi433SetgfwPawJYtxnZiOZhDCVxB9WhxqNI3y6eR29cQz4Kr3xKUXbPbYlZygPr2NDrbOObcNu+HKCHzraUX5V/8/l9/QOP2vUJ7zoJYGnwq++J715rOSxKOkBzGzgacB3wMwCAQSBD2YeYE4E6mDmAs8H0BKBVQB8W4ya8iCLRVgMRmiPdrELks+5Uz/lXsdfX8XdRgjDeNDdOiHE8/hC7hXad3ZX3bUBB+uZfQer6/YbeVivr3wtvCoQ7JyV4io78ipIgRXhShLK0qRgjyGTHjeXAZdayhIsX3bkaRQJ6z8EcdcjjEf5ApiZSkjk2H3ELK0PmPFWEVGTEncAa67hT8AM21A8inlrwPQeLFeIgS4g85NBi27cJohtnPK1gtjmnJ0r1/o5ZilnvGLAraYNAk3cRg/4kDegC+BDXwHOShpf7dVGJJGX8GqKhXQHLtx1k0Z9oJ7FwpEgAMy1cpjugdd3blfCBIZ4GJM5tC37QkZQxaS9MdfAxEuDyeM3uEke3c9+Efxhh+Tj5CZG8AKJ/LVtWxsRnrBtJycyoTJRbc4vYSQHATbfhZc727ENnsW6DfamGoNczq8dO+ZA3snlCtpq8v1+Cmiac8u2urXtGIXd9PRAlnm8tn1umflgcjw+j2X+espzUdbwXZ6mHq/5M3ItmevWgk+7jCvUgnX31i7EPqiuY8skWq2Rzd+hGskCZ2vMk53jZRHZUS/KewpCc5Tt9b1IsfBOS6ttkpYxi4bphO05bN917I/kOdtEpl+8r83Amr6U6VghZ9WavYieirK7FrO5mllFKscxIzTqrtgOnKPwORGKO1GkZViwFpRhybIS805SZlFaLjMk5ZUWWdqsFGcEVcry/XvnicDYF8GYBYKZuIAPIBC1oUAX4XRbP2oi7ZHVIpnznhvAXTgNtbxuGmoNvUqxB/JQ662uz01epahijlC5aA3kOJm/tRe2lJKyZXp3SrFtfAzWtZmWCuaBGOzcqrllGoPrXKpKPag/8Kf+DIKhKzfdVR3gWO3pJdLqRG8cwQ9VgvuGuq17OABCXnbkVQ5/KKF+p8XHS9cbFfQH6sP6W9UbhzNtrYfEz4sqAtMmWm2herWhV19Djr2q5xr63mtY5wqGvilYjzUELHSzeNDGQzeLv+j7fxoCx72hJfgwe9o+YfKpzD/FD/lHY/2s0ckQjjZ/7+pPxQvbKfBcQWGRN2s8CIr/O1qjR/69ZRNwz+kPZtkuCO6BJ0J6P+C18Wapr2wp8WnnXVi8U63J0BxnQZsjqYsrOsWf9/LzQPzEnBWzXKQAA9l+pw5wAT20HCWehQN6CAf0UH2rMkIP2ePu09Xa/uw+ADZn/wI= \ No newline at end of file diff --git a/docs/java/concurrent/images/interview-questions/threadlocal-data-structure.drawio b/docs/java/concurrent/images/interview-questions/threadlocal-data-structure.drawio deleted file mode 100644 index 46b904ab..00000000 --- a/docs/java/concurrent/images/interview-questions/threadlocal-data-structure.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vtbc9o4FP41fkzGF2zMIzgknTbd7W46u82+dIQtbDfCorK49devJMv4JoITDGQ3DMxgHV1sne87F0lGs7zZ+o6AefQZBxBpph6sNetGM03D0B32wyWbTDIY9DNBSOJANioED/EvKIW6lC7iAKaVhhRjRON5VejjJIE+rcgAIXhVbTbFqHrXOQhhQ/DgA9SU/h0HNMrn5QyKig8wDqP81o7dy2pmIG8tp5JGIMCrksgaa5ZHMKbZ1WztQcS1lysm63e7o3b7ZAQmtE0Hc/XPz8ffyJdhukBP00/TK2/xx5WbjbIEaCFnLB+WbnIVELxIAsgHMTRrtIpiCh/mwOe1KwY6k0V0hmR1+gSpz+ets8IUJ1RCavLyVgOiMkbIwwgTcRdrOoWO7/NGlOAnWKoJ+oOJzns0Jyx1sISEwnVJJBVwB/EMUrJhTWSt1ZNgSDqahp2VVwW4Zt4mKuFq9WVDIAkVbscuVM4upNZfgIDVRGBsa66tDT1t3NNGnsZMhktutRG7uBWS4UewBHfcNjTTQewZRxNSQc35ueC8EhBcpQKDIWtgOPN1UcmuQvE77mujG21g8IvhSBsMtvf5we4jbPDaTxrMYEqnNfgr4CU4gTWkpQigOExY0WdQQiYfcQhjZnZDWTGLg4DfRsm3gpGcFghMIBoB/ykU8vrNCw4ajiyXyDUSHzEmBTTGiRy0wuMKbztgoT2osrCXM67EQsNVsDD3ip2T0FD5gYxYXGGtqOWqqPU1IhAE+Vjs2bLhJO/eJqEq2HcAd8+qwr2FtgS3o0DbPBbafb2heRiwsCeLmNAIhzgBaFxIazoq2txjPJdg/YCUbqSxgQXFVSjrlthOzfzBnlUygYgZ7rIar1Uqk12/4FgQWoLT16vg2FbN0VNAQkhlr3J4rQ1km3sGSvGC+LAxkEBwO58DQDUOBrWCyCsQZtiRzTfZXxQeeeHazos363LlzaaZJwhm7CRDpsJnlGDr52GNmae1e1jTGdjmifI2gUfDudZytwBAd6rM3RzfhZNpN260Yal6y6jZP5ofVeRuHUbNe8zi12eG1CV6lk1NkSydNno6h6OuTMNLqDMRmHHdJpNU/PyHOdDau7fnhFNLoG2zuYwzrJOSor/fIcMkGPItiULnbbMjuI7ptyKUstJjHnLZdRFVeSEPqq/PqEpKtBU6zGUHhlDXqGFYd9M78qX9A+m1gY4diwdH8gd/iQFN/WL8FeNv4K0w/v4pbb+nIkANmjQCc35JwQTVLF+l0ZRxNtcbV6PP1AjihEMj+vgYITBPYzFY1iKKUXAPNnhB89vkpVE1E3x58va6ldsLQnw9m+4rMjtTBenAPBKmuZNrgymbO40B+hP6FCRhG3ib8AUEz78KPyUFc+6uIBkvmVpTrbllKg2XiqWZ2AaD07zvBFOKZ7JApLq2gwpV2SP2ZXP0eEix2Ww8VjaKMvvy5oR6OGHEALEAF4KUrmBK93PgeUPZz4x9yNvusYA3FMC/0JvbKm8+TsTjtfPkh1BLHISAglqYqXuKRNoRMS8Oky6Y9Br4tzb1luFvsbC+2P3x7H5TxXcfD5xjxXR799I+nYOkOzeQjfau3IDZmg3ng793cQNvwA0YRks/cLx4YF/8wLH8QK81Hc4Hv2qv7+IHCj+wc5+gsaNwIo+R786ejzLNncDr6+t3YtJOa7zOh0+LV57etUmfxlBNq3duQ929b3sJ7Qf6Abc1HU4Bf/L9YZP8Hn5MvOXYXt644NPsUfXeXR2b//sJ+nb9dIoTdCUILZZZl1Oz5w67LKsGzWtPzRpr6e5OzZTI715XXQ7NTnBoZrqnOzRT4q86L+/8JQrduLDgufcmVCzo6r0JViz+25B5jeIvItb4Xw== \ No newline at end of file diff --git a/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png b/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png deleted file mode 100644 index f2b8ed15c4faf9ba2a74b414ab5c0a5631754655..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4758 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 \ No newline at end of file diff --git a/docs/java/concurrent/images/jmm/.$cpu-cache.drawio.bkp b/docs/java/concurrent/images/jmm/.$cpu-cache.drawio.bkp deleted file mode 100644 index f1cff183..00000000 --- a/docs/java/concurrent/images/jmm/.$cpu-cache.drawio.bkp +++ /dev/null @@ -1 +0,0 @@ -7Vpbc5s4FP41PDrDxdwejWOaZuJpum4nu/umgIxpMHKFfMuvXwHiKrljD5C42Y4fjI6ufN+56Bxb0qbrwycMNqs58mEkqbJ/kLRbSVUVWbXpVyo55hJb1nJBgEOfDaoEi/AVFjOZdBv6MGkMJAhFJNw0hR6KY+iRhgxgjPbNYUsUNXfdgABygoUHIl76FPpklUst1azkdzAMVsXOisFe+Bl4LwFG25jtJ6maa7iua+Xda1CsxV40WQEf7WsibSZpU4wQyZ/WhymMUmwL2PJ57one8twYxuScCcZiPvmue3LyWX3Yz5/uCQSvI8VghyPHAhDoU3xYE2GyQgGKQTSrpI63xTuYrqrQRoZA1pJpq5rwgNCGDfkBCTky5sGWICpakXXEehOC0UuJPYXFWaKYsOH0fOkIgMkk5ZpKvAgkSegVYjeMioUoDvj4d3qQG8Uq2v+wg2WN20Ojday3HiEO15BAzIQ5LikYJ/FmogRtscdGfXtdzP07tL/zfi6++A/Jk35vjVSm1gAHkPxqnFaqBTU3iOhx8JFOxDACJNw1DwKY3gfluHLqIwrpEVWZ2aiqMQ1kFjq25OYS+cHYrEqD6EPtGJUo0yuxjv3q9Xcg2sLCVFo6VylRSuR+FRK42IAM1D11O02FqauHnrapCkxRhHC2lra0POh5pWIVPTGKU91NXiDxVozj0iQrwgX87iAm8FAT8QyxXqsJtGKw9r5yLJrMZKuaU1EN+TSpDTouxV7jsJ8+fqeCv2AQJlTZk45UNKGHiq9D8yzo2yT2TYWiqTd6g43SDGpsKLbOs6EPRYZii9loMUDfkIhcZAvOOvZMBKIwiFMfSXFLHZmT4hXSWDdhHevQ9zMXLuK16ck5J3zScLKR7PinveQF1LXNyBIQJzIjrQfixFHSfPcoWQtu+iWxrbfo2mc81M4NiGYfAZG+GzjWBmzSQJecjpea3dQ/3WxdrC4bTx/yE/QbVHnP/kBF8hR4K9irU/cBtJbeRf5b6K/68Azj1k3G5j2DLvIMfbh0sWcY//EMfXoGk/cMQtzVjo6hUxwvTlmzPWebSDNDopHKcaSZKTkTyXG7meH55ta+AC+hcfoCPIAZGvKZZmj2YIbWXHX2o29kM3GWDvz67yR0HVGKMdMlS5cmU2k2lpypZJuZxJUc+uBmksk92IFPaflBUo0ovXI94wZfxs9tmpxn4I+SDP0JHaDom0MGZNFPn4LsOyX+VrKV9GHiSLZdbvWDbpVVOm68+EovfBF4hpFTFjXam7eTLtqu6ZyTfbI1CbVAFBdOZsh0S1HbgVfnL4qWQA+VocIBr4dzEFLC5TlcI7b+dToEDnUBN2c7BFN9Q4cgJEJwO6KvIN+Ohrwf9ZH0duOBT3oFNyTbvBko6xVSMRZT8XkAKpbLpXpm6WdoKtSWSVwBETpPhDpMxqBDyx9fBQ28RWiCotxgZSBxzqBzaH+EmrulXZJ99FhzF4LMftcYvubeSRUM/t7azRCHLI13MsSx3DTDt62NC8Hns7jfpzbejQvdfM/auJAMS0zGVWZKnUrjnZjT21b07qVx/ieNP5n3b5F5d9JDo5V5j0WXqjfNvIuF/2cZn8CVv3+ioShiLj54yqcb18cEX5D6+DkfbxND5ny0Wf2HK/91r/qjnDb7Dw== \ No newline at end of file diff --git a/docs/java/concurrent/images/jmm/cpu-cache-protocol.drawio b/docs/java/concurrent/images/jmm/cpu-cache-protocol.drawio deleted file mode 100644 index 39dfe1da..00000000 --- a/docs/java/concurrent/images/jmm/cpu-cache-protocol.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vpbc6s2EP41ekwGgbk9GozTcxp3Ms102jwqIGMSjHyEfOuvrwTCBoQz9rGJPSedZGJ2tbqw3960MTD8+eaBosVsQiKcAl2LNsAYAV2Hmu7yD8HZlhxXM0pGTJNICu0Zz8m/uJopucskwnlDkBGSsmTRZIYky3DIGjxEKVk3xaYkbe66QDFWGM8hSlXu30nEZiXX0e09/zecxLNqZ2jJF35F4XtMyTKT+wHdGFvj8dgph+eoWku+aD5DEVnXWEYADJ8Swsqn+cbHqdBtpbZy3vjA6O7cFGfsmAk/vmPyosURxJPk95fgD99+s+7kKjnbVvrAEVePJAllMxKTDKXBnuuFS7rCYlHIiUIBBaVxaj/hkZCFFHnDjG0l8GjJCGfN2DyVozmj5H2neq4Vb0oyJsWhVUggyoYCas4JU5TnSVixx0laLcTVQLf/iIPcQ6eiX+TBCmK0aVDbOvWEaTLHDFPJVLVbqYosaYg/UKkujRjRGLMP5KxSTui7toHE7gETfhq65QIUp4glq6a5Imn18U5uN/WJJPzIuiY9VDek/Un/HDhac4nyoHLW3n74Q+0Ye1ZhVSdYmFTHCqVLXDlKy+T2NiRwXM8Shp8XqFDymgedpr3UrcMUNLcAn6SEFmsZUyfEYbizq2okI5kw3fwds3AmId455Id4rzBlePMhQnLUaSoaWpJe78OKoUnerBZSdEs7DGoDjlN1byi695/+4ow/cZzk3NbzM6Foqh7DyMT2Uapvg3hpKKCh35sNNHZuUEMDuqaKhtkXGINuMFoA8BdkXQGypc266iULpUmciQjJ1SbCmCfUlfBEN5QD8ySKigDeBWszjish+KDfFJLy+B0p6XTk2l7kdODW5UVGX7iZV0+RtcxmnpLYLpZafz4ZWkcmQ6eXZMjfDG1rAguR5PLDudJwm8Zn2q2S6jR5/lCe4KIJ1VLiyCOP85qPwhm+aDyPEHam4UmhuzNWXSIqDFpFjKtGBbMrKvQWze3/o8LPRwXnyKhQ3REvFxbOwtxRPM9b5iCwAM9RngcCG3hD4I1BMAaeDxyn4PjANUBgguEIuJwzAJ4j5AP+l48O5PShLWScEXDGYmgYiF8xi4+KPSfP30BgCEkHTgJBlHu453n88Z7dLrOn2DpcZvfg8ZZ2pMfbfXm8q6BfQMYx8gtYOdAliBwZW+LjDr+jFXoQLQ6gW6mo7F5pAy/rx1I0AArl3+WF9odcAJqLTaHIapw/xcWnsCluSlA8DD3gurut3vhWRTflPsxutK5M0StOvV3jpL15+2rH6ZrNecVPsSbj3k6yKqD1eamDejvFm2o96nTYIezLDquFa4Y4QUkmggSeE7nBF4gItn7tiAChgsQjZ2mjuz6LsVu8XHeUY659/5m3a6j2mQosvvWAxXQ61Y/sMfWNhd5yiltAQu06Per9XFBM7ESDm8BB9Qmjo/33uQ0nOFC0/Ss09x3jlNvOhZv7UAL4+d3980zBVIvX8zzxZrvwA63phzfQhodqy+aL9OEHpn1zfXhod6Nxkxem6zXizbYfXb0RD9Ub+Fcotzt86PpFnq5eQr9CuW1at4dExyX0ly+3VZ/os9zm5P5rOuW/cfbfhTKC/wA= \ No newline at end of file diff --git a/docs/java/concurrent/images/jmm/cpu-cache.drawio b/docs/java/concurrent/images/jmm/cpu-cache.drawio deleted file mode 100644 index fb46371b..00000000 --- a/docs/java/concurrent/images/jmm/cpu-cache.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vpbc5s4FP41PDrDxdwejWOaZuJpum4nu/umgIxpMHKFfMuvXwHiKrljD5C42Y4fjI6ufN+56Bxb0qbrwycMNqs58mEkqbJ/kLRbSVUVWbXpVyo55hJb1nJBgEOfDaoEi/AVFjOZdBv6MGkMJAhFJNw0hR6KY+iRhgxgjPbNYUsUNXfdgABygoUHIl76FPpklUst1azkdzAMVsXOisFe+Bl4LwFG25jtJ6maa7iua+Xda1CsxV40WQEf7WsibSZpU4wQyZ/WhymMUmwL2PJ57one8twYxuScCcZiPvmue3LyWX3Yz5/uCQSvI8VghyPHAhDoU3xYE2GyQgGKQTSrpI63xTuYrqrQRoZA1pJpq5rwgNCGDfkBCTky5sGWICpakXXEehOC0UuJPYXFWaKYsOH0fOkIgMkk5ZpKvAgkSegVYjeMioUoDvj4d3qQG8Uq2v+wg2WN20Ojday3HiEO15BAzIQ5LikYJ/FmogRtscdGfXtdzP07tL/zfi6++A/Jk35vjVSm1gAHkPxqnFaqBTU3iOhx8JFOxDACJNw1DwKY3gfluHLqIwrpEVWZ2aiqMQ1kFjq25OYS+cHYrEqD6EPtGJUo0yuxjv3q9Xcg2sLCVFo6VylRSuR+FRK42IAM1D11O02FqauHnrapCkxRhHC2lra0POh5pWIVPTGKU91NXiDxVozj0iQrwgX87iAm8FAT8QyxXqsJtGKw9r5yLJrMZKuaU1EN+TSpDTouxV7jsJ8+fqeCv2AQJlTZk45UNKGHiq9D8yzo2yT2TYWiqTd6g43SDGpsKLbOs6EPRYZii9loMUDfkIhcZAvOOvZMBKIwiFMfSXFLHZmT4hXSWDdhHevQ9zMXLuK16ck5J3zScLKR7PinveQF1LXNyBIQJzIjrQfixFHSfPcoWQtu+iWxrbfo2mc81M4NiGYfAZG+GzjWBmzSQJecjpea3dQ/3WxdrC4bTx/yE/QbVHnP/kBF8hR4K9irU/cBtJbeRf5b6K/68Azj1k3G5j2DLvIMfbh0sWcY//EMfXoGk/cMQtzVjo6hUxwvTlmzPWebSDNDopHKcaSZKTkTyXG7meH55ta+AC+hcfoCPIAZGvKZZmj2YIbWXHX2o29kM3GWDvz67yR0HVGKMdMlS5cmU2k2lpypZJuZxJUc+uBmksk92IFPaflBUo0ovXI94wZfxs9tmpxn4I+SDP0JHaDom0MGZNFPn4LsOyX+VrKV9GHiSLZdbvWDbpVVOm68+EovfBF4hpFTFjXam7eTLtqu6ZyTfbI1CbVAFBdOZsh0S1HbgVfnL4qWQA+VocIBr4dzEFLC5TlcI7b+dToEDnUBN2c7BFN9Q4cgJEJwO6KvIN+Ohrwf9ZH0duOBT3oFNyTbvBko6xVSMRZT8XkAKpbLpXpm6WdoKtSWSVwBETpPhDpMxqBDyx9fBQ28RWiCotxgZSBxzqBzaH+EmrulXZJ99FhzF4LMftcYvubeSRUM/t7azRCHLI13MsSx3DTDt62NC8Hns7jfpzbejQvdfM/auJAMS0zGVWZKnUrjnZjT21b07qVx/ieNP5n3b5F5d9JDo5V5j0WXqjfNvIuF/2cZn8CVv3+ioShiLj54yqcb18cEX5D6+DkfbxND5ny0Wf2HK/91r/qjnDb7Dw== \ No newline at end of file diff --git a/docs/java/concurrent/images/jmm/jmm.drawio b/docs/java/concurrent/images/jmm/jmm.drawio deleted file mode 100644 index cc9299fa..00000000 --- a/docs/java/concurrent/images/jmm/jmm.drawio +++ /dev/null @@ -1 +0,0 @@ -7VpRc5s4EP41ekwGAQLxCI6dzs10mmnm5q6PMsg2E4wcLMd2f/1JIGwjqVcysVOcNnmwdiUk9H272l0AeKPl7r4iq8VnltECuE62A94dcF0InUD8SM2+0URR2CjmVZ6pQUfFY/6dKqWjtJs8o+vOQM5YwfNVV5mysqQp7+hIVbFtd9iMFd1VV2RODcVjSgpT+0+e8UWjxW541H+i+XzRrgyDqOlZknaw2sl6QTK2PVF5Y+CNKsZ401ruRrSQ4LW4NNdNftB7uLGKlrzPBeTT12/lcrm8fy6/fn54+huOn7/ctDC/kGKjdqzulu9bCCq2KTMqZ4HAS7aLnNPHFUll71aQLnQLvixU94yVXLEIAynnRTFiBavqubyMUDxLhX7NK/ZET3qCFNPpTPY8UZ5K6BwhmJtU+36hFae7E5Xa9D1lS8qrvRiiev2WAGWB0Ffy9sin2+oWJ1x6nlISZUPzw9xHmEVDIf0K1KMPDzqEgwPdPTfoXZApzBANbSBHQeiRQAdZ5+wcoKMu6B40QYeBBXR4MdA9E/RxAKIRiEdgjGQjcWQDBwAj2YjvQIQNYgQAvIt+F+WSlVSjRKlIkc9LIaYCVir0iYQzF+d7rDqWeZbJZax0Hw1Cpwxfwmmwxp/FaaBjc5pL0Yc+vM/4weB8JvjjM6/gLxqaz4QW+kKQxCCZyEaMAU6gwZaYWKS0P8K0f6yfzWiQWmN9FkZTx7nEsRVqsT60UOBaKMCXogD3oMA8ya6YAh8PjQIITQ4MwMssliWaPGoKsl7nDWik4qb6f+AXsFX7fyWYt6gVv6mxtXC3U0g30l5J/UhYs02V0p/nleK255T//FygWafgNCk9oQxZGGt1FS0Iz1+6ZaqNRrXCA8vFzg4W42oJupF3N/tWV52WlfpEWgA1TKoBxpiotqrDtt9gaD3y+qswtIEYBvKiW2RPiV5rGuZUh5t8L+Ow1B9vSmAvXsJpbomQeZAjG/uXS0ehb4mmPkgwSJKrSEM1V3YvEYA9r2voKPjVaSi01G6SLQRE9in5i0Hc8DeRtI0jgEPZPqN7aGkRTmmdFuluY6RJU4x8dK7kVAtPgaW+iyy8+BfjxVbe/X68eK4/MF5sddvvxwtyhuYvtmKuBy9SE4F4cnx28sGYglhL03A/pvQU7HxMWV5r/GFK+kY0MKbaJwHXUjPRXc6bOVzHVbKc5Ma5dRysFMeJpLA/ER5olQvgZA75xlq/rScGUqu52qtNpJ/CvYt4bSI/fN86zb2yp0XvZZADsTPkwVsnOvnrWp1+TvV/PqBbnVjGf1/Dszw9amKWfNkiYtYIRKGKWYloTGpN/Bd5IffyyxTgBoUsb6dVx1iD5438rKM2vpt1bX2xGACD1a6mu+0XrXn9K5e6k9FvjIGIDrKgVks1y8j3Ph6IkeEVv768lgZckCktEpI+zWu9vrj+vFzIJ6E2qf/rObmwUlbaPO4MYdgNtRrdsdTo2OJF+vOvHnFYiMcvexpjPX4f5Y3/Aw== \ No newline at end of file diff --git a/docs/java/concurrent/images/jmm/jmm2.drawio b/docs/java/concurrent/images/jmm/jmm2.drawio deleted file mode 100644 index feb6445b..00000000 --- a/docs/java/concurrent/images/jmm/jmm2.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vpdc+MmFP01PCYj9IHQo+SPdDptJ910pruPWMKyNrJwZRzb++sLErIkhF1na2e92Z08BA4IxDn3Xi5YwBktdw8lWS1+ZwnNgW0lO+CMgW1DaCHxTyL7GgkCvwbSMktUpxZ4yr5QBVoK3WQJXfc6csZynq36YMyKgsa8h5GyZNt+tznL+7OuSEoHwFNM8iH6d5bwRY1i22/xX2iWLpqZIQrqliVpOquVrBckYdsO5EyAMyoZ43VpuRvRXJLX8FI/Nz3Senixkhb8nAc+ft4vUfny54fHdHX3UHz568Mf0zs1ygvJN2rB6mX5vmGgZJsioXIQCJxou8g4fVqRWLZuheYCW/BlrprnrOBKRIhkPcvzEctZWY3lJITieSzwNS/ZM+20oBjT2Vy2PFMeS+YsUVFvR0tOd0eXDQ9kCiukbEl5uRdd1ANuw78yQOiq+raV026wRUdKx1EgUSaUHsZuWRYFRfQrSLffPekQ3hzpzqVJ75NMYeJR30RygHyHIJ1kXbNLkO71SXfgkHSIDKTDq5HuDkmfIBCMQDgCE08WIksWMALYk4VwDAI8EEZwwvvs91kuWEE1SRRE8iwtRDUWHFKBR5LhTIT3UDUssySR0xjlbg1Clwxfw2mwpp/BaaBlcppryee9e59x0c35DPrpM6/QL7g1n2nW0JGCJiKlVFVW8gVLWUHySYtqpLV9fmNspdT7TDnfKyrJhrO+toKucv9RPV9VPsnKvddUx7tu43h/qCWhzJKl3DlZr7O4BqdZ3poNKfmwUwV3utWrlks9LaVghm3KmJ6gUOXWYoKU8lPJ6xHbKGlOePbSfxGT0NWjYmlk3+mwYlnB152RHyXQmpzTtzjb0tLu090R9DQTq+dvDe6wkK+3Qd8QQnwQhSCaykKIAY4MZprn4lR1zK/Pzzfnc4piY76Z+MHMsq6xdfpavukbwoBtCAP4amFguFW+ZRiA95Zla6HAc/8zGIjaIy0zQYEM/BX49u6Pb9r9fd3/4Wn/1/sjZRlXDQD4jABgMNDvNwC4+NYCQDCUYMC3afM94m8n2G/3/na7/9QNCEfc3aDBRfzXOdN/fbOiHcU8g2AN9jovH7ilrd1QDC4e6mWqp074t62dIAYWVfMwGOhSrt6s470Z2rcyDM8J7r2+acCvNI3hUIeXfCvjuPT97tXvsDS39LxhHPdM6l/vPA5tw2bqggiDKPouzuGaK9vX2H8dp2/oHvrW53BouPCVanlAHH2kfiEIa/2mUrZJALAvyxd0Dy0rwjGtsiLdbQZZ0gx7rnepkxHSz59DYQKDLu7VdDHdCf94uji2e2O6GC57f0BdPOvW/MV0H3yGLhIJQDhtL4/fmVIQa2kaPk8pPQW7nFKma7efSslL+htTyjacmWql5G8sQqkRCHylVCQK0woJfyUv5EF+jwJslMukblb2dEL/bOTHHBW5d+uK3VB0gGi1q4hs2kUprf7LqcZS8wkGghOZRqqp6mnkzz0OCL0bTCqlaeRkRvOIxM9pheuT65dEot4xsKj6q8bk4rzGCnD0sPi/jM/2tczUMmSm2HSieL31iWr7PU99hmu/inIm/wI= \ No newline at end of file diff --git a/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png b/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png deleted file mode 100644 index 68ec405a0d1cf6cf5abf852c034a89f58bcd6e89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8327 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 E03-bKZvX%Q diff --git a/docs/java/concurrent/images/thread-pool/production-accident-threadpool-sharing-deadlock.drawio b/docs/java/concurrent/images/thread-pool/production-accident-threadpool-sharing-deadlock.drawio deleted file mode 100644 index 3a2c775a..00000000 --- a/docs/java/concurrent/images/thread-pool/production-accident-threadpool-sharing-deadlock.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vpbj5s4GP01fkwFBgw8QkLaSl2p0qzU3acVA+ayJTglziTpr18bTLg5WaYThrQdaTRjf75gn/Md+7M9QFtuju8Lf5v8QUKcAaiER6CtAISqqiD2h1tOlcWyYWWIizQUlRrDQ/odC6MirPs0xLtORUpIRtNt1xiQPMcB7dj8oiCHbrWIZN2vbv0YDwwPgZ8NrV/SkCZiFtBs7B9wGif1l1VkVyUbv64sZrJL/JAcWibNA9qyIIRWqc1xiTMOXo1L1W59ofQ8sALndEyDKF4s0OLpz4do5cF/PirF8tNuoVW9PPnZXkxYDJaeagQKss9DzDtRgeYekpTih60f8NID45zZErrJRHGUZtmSZKQo22qhj60oYPYdLchX3CpBgYUfI1YynIaY2RMuKD62TGJa7zHZYFqcWBVRaguEhYsZInto+FJrEpIWV0jYfOEi8bnjBkWWEEA+A1R9WlCjCKNACmpo2o+KMgmoqj43qsaNUb09RlCbGyM0xMgzgGsClyXYbxdYa+BZwPK4kRWxrI24xWVpHXgIuA5g02KVbae06LwV++GVHeCoA9AZVrSLbNcvc5LjnhMLk5+lcc6yAWMAM7vLkU/Z2uuIgk0ahvwzUiobsrnHRySnYvdQ0W3YPe9Bgl5Twq4pYRdOxa45il0ELBs4JieVsWUteR3HKxNvpA5IVdHcrFoSVhGwl8Bx3qT6g6xKY4BXZdWW7FYo4+jvtn7eoQV92/MYsMRlsSuBcVgFBsmxKWSpuPzLhe4Ad80TDnMPt/QEFTiKzDfWwF0Cy+IWVsG1ygVjDSxN3o/NSpXSkVhXTl63t+uxMyiq4YvB9B2MAcMC80tu0A5pej7QjxsNbIW6LMSx4KOGbuQ1RtdpdDh0GmgZQ6dR7am8RhLT4JCdR0SWFDQhMcn9zGusPXU1dT4RshVw/4spPQm8/T0lXTIYgsXpL9G+zPzNM++MOrs6tgtXp+cKeUf2RYCvzFutj3Z+EWN6raKgg6NyleICZz5Nn7qnuNvzpb3xdZ0vdFd81ePubLYmXyBdNNw/hxvoxGfhCXZGo78zyuKdVz2jQP031QwcqxnrrjQDjTn4mgN3+65wr8f9ghBSRZdCyAsrHhwb6N3/pWB/4dNnvxaE6Ddd+LSRAqzZuBMB1nf8b3xdAki9K75U2WPGxAtm/usumGj2SFEd8ZCC89Dhz3zgfFUV+rvkDHQLVG7/7FOKi7y0QEU7Q1o/7cGukKBxDdr/dfsWcIYEt9o2Wh3iC59JykbS8Ibsd0aXuf6tViV50a4hZdiV2XUBQ+91VC0Jg45Kds8TfwHhsjeeSl+clVEK1pmCS+kORGwAZ1Veig3OeQu1JePqSxPIeMS7XXsR128ja1PpHQCV2WUteaV67jqty9fpKxRPE9pOQJCmzk6Q5EliaoJgR4OTbaWv83bep1SfX3Mvf4/4AUp/Gs0Zs2uu/thrEpT/yppD81MquWyentKfRnOm5LntVgSxbPOPdVV02vx7oub9Bw== \ No newline at end of file diff --git a/docs/java/concurrent/java-thread-pool-summary.md b/docs/java/concurrent/java-thread-pool-summary.md index 5c8e0d7d..d7c08333 100644 --- a/docs/java/concurrent/java-thread-pool-summary.md +++ b/docs/java/concurrent/java-thread-pool-summary.md @@ -21,14 +21,6 @@ tag: **线程池一般用于执行多个不相关联的耗时任务,没有多线程的情况下,任务顺序执行,使用了线程池的话可让多个不相关联的任务同时执行。** -假设我们要执行三个不相关的耗时任务,画图给大家展示了使用线程池前后的区别。 - -注意:**下面三个任务可能做的是同一件事情,也可能是不一样的事情。** - -> 使用多线程前应为:任务 1 --> 任务 2 --> 任务 3(图中把任务 3 画错为 任务 2) - -![使用线程池前后对比](./images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png) - ## Executor 框架介绍 `Executor` 框架是 Java5 之后引进的,在 Java 5 之后,通过 `Executor` 来启动线程比使用 `Thread` 的 `start` 方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助于避免 this 逃逸问题。 @@ -408,9 +400,7 @@ pool-1-thread-2 End. Time = Sun Apr 12 11:14:47 CST 2020 3. 如果向任务队列投放任务失败(任务队列已经满了),但是当前运行的线程数是小于最大线程数的,就新建一个线程来执行任务。 4. 如果当前运行的线程数已经等同于最大线程数了,新建线程将会使当前运行的线程超出最大线程数,那么当前任务会被拒绝,饱和策略会调用`RejectedExecutionHandler.rejectedExecution()`方法。 -下图是我为了省事直接从网上找到,原地址不明。 - -![图解线程池实现原理](https://oss.javaguide.cn/javaguide/%E5%9B%BE%E8%A7%A3%E7%BA%BF%E7%A8%8B%E6%B1%A0%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86.png) +![图解线程池实现原理](https://oss.javaguide.cn/github/javaguide/java/concurrent/thread-pool-principle.png) 在 `execute` 方法中,多次调用 `addWorker` 方法。`addWorker` 这个方法主要用来创建新的工作线程,如果返回 true 说明创建和启动工作线程成功,否则的话返回的就是 false。 @@ -716,6 +706,7 @@ Exception in thread "main" java.util.concurrent.TimeoutException #### 执行任务过程介绍 `SingleThreadExecutor` 的运行示意图(该图片来源:《Java 并发编程的艺术》): + ![SingleThreadExecutor的运行示意图](./images/java-thread-pool-summary/SingleThreadExecutor.png) **上图说明** : @@ -760,6 +751,7 @@ Exception in thread "main" java.util.concurrent.TimeoutException #### 执行任务过程介绍 `CachedThreadPool` 的 `execute()` 方法的执行示意图(该图片来源:《Java 并发编程的艺术》): + ![CachedThreadPool的execute()方法的执行示意图](./images/java-thread-pool-summary/CachedThreadPool-execute.png) **上图说明:** diff --git a/docs/system-design/basis/unit-test.md b/docs/system-design/basis/unit-test.md index d18b0538..281b5135 100644 --- a/docs/system-design/basis/unit-test.md +++ b/docs/system-design/basis/unit-test.md @@ -103,7 +103,21 @@ TDD 在很多人眼中是不实用的,一来他们并不理解测试“驱动 3. 由于测试用例在未进行代码设计前写;很有可能限制开发者对代码整体设计; 4. 可能引起开发人员不满情绪,我觉得这点很严重,毕竟不是人人都喜欢单元测试,尽管单元测试会带给我们相当多的好处。 -相关阅读:[如何用正确的姿势打开 TDD? - 陈天 - 2017](https://zhuanlan.zhihu.com/p/24997923) 。 +相关阅读:[如何用正确的姿势打开 TDD? - 陈天 - 2017](https://zhuanlan.zhihu.com/p/24997923) 。 + +## 单测框架如何选择? + +对于单测来说,目前常用的单测框架有:JUnit、Mockito、Spock、PowerMock、JMockit、TestableMock 等等。 + +JUnit 几乎是默认选择,但是其不支持 Mock,因此我们还需要选择一个 Mock 工具。Mockito 和 Spock 是最主流的两款 Mock 工具,一般都是在这两者中选择。 + +究竟是选择 Mockito 还是 Spock 呢?我这里做了一些简单的对比分析: + +- Spock 没办法 Mock 静态方法和私有方法 ,Mockito 3.4.0 以后,支持静态方法的 Mock,具体可以看这个 issue:https://github.com/mockito/mockito/issues/1013,具体教程可以看这篇文章:https://www.baeldung.com/mockito-mock-static-methods。 +- Spock 基于 Groovy,写出来的测试代码更清晰易读,比较规范(自带 given-when-then 的常用测试结构规范)。Mockito 没有具体的结构规范,需要项目组自己约定一个或者遵守比较好的测试代码实践。通常来说,同样的测试用例,Spock 的代码要更简洁。 +- Mockito 使用的人群更广泛,稳定可靠。并且,Mockito 是 SpringBoot Test 默认集成的 Mock 工具。 + +Mockito 和 Spock 都是非常不错的 Mock 工具,相对来说,Mockito 的适用性更强一些。 ## 总结