{"id":718,"date":"2024-11-15T13:44:04","date_gmt":"2024-11-15T04:44:04","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=718"},"modified":"2025-03-24T08:52:53","modified_gmt":"2025-03-23T23:52:53","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91java%e3%81%aeasync-processing%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a7%e3%81%a4%e3%81%ae%e5%ae%9f%e8%a3%85%e3%83%91%e3%82%bf%e3%83%bc","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=718","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011Java\u306eAsync Processing\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a7\u3064\u306e\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u3068\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"<div id=\"sgb-css-id-1\">\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">\u306f\u3058\u3081\u306b<\/a>  <\/li>  <li>    <a href=\"#i-3\">\uff11\uff0e\u975e\u540c\u671f\u51e6\u7406\u306e\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-4\">1.1 \u540c\u671f\u51e6\u7406vs\u975e\u540c\u671f\u51e6\u7406\uff1a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u9055\u3044<\/a>      <\/li>      <li>        <a href=\"#i-6\">1.2 Java\u3067\u975e\u540c\u671f\u51e6\u7406\u304c\u5fc5\u8981\u306a\u30b1\u30fc\u30b95\u9078<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-7\">1.3 \u975e\u540c\u671f\u51e6\u7406\u306e\u57fa\u672c\u7684\u306a\u4ed5\u7d44\u307f<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-11\">\uff12\uff0eJava\u306b\u304a\u3051\u308b7\u3064\u306e\u975e\u540c\u671f\u51e6\u7406\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-12\">2.1 Thread\/Runnable\u306b\u3088\u308b\u57fa\u672c\u5b9f\u88c5<\/a>      <\/li>      <li>        <a href=\"#i-13\">2.2 ExecutorService\u306b\u3088\u308b\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u7ba1\u7406<\/a>      <\/li>      <li>        <a href=\"#i-14\">2.3 Future\/Callable\u3067Java\u306e\u975e\u540c\u671f\u51e6\u7406\u3092\u5236\u5fa1\u3059\u308b<\/a>      <\/li>      <li>        <a href=\"#i-15\">2.4 CompletableFuture\u3092\u4f7f\u7528\u3057\u305f\u30e2\u30c0\u30f3\u306a\u5b9f\u88c5<\/a>      <\/li>      <li>        <a href=\"#i-16\">2.5 ParallelStream\u306b\u3088\u308b\u7c21\u6f54\u306a\u975e\u540c\u671f\u51e6\u7406<\/a>      <\/li>      <li>        <a href=\"#i-17\">2.6 Spring Framework @Async\u306b\u3088\u308b\u5ba3\u8a00\u7684\u975e\u540c\u671f\u51e6\u7406<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-18\">2.7 Reactive\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u3088\u308b\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0I\/O<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-19\">\uff13\uff0e\u5b9f\u8df5\u7684\u306a\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-20\">3.1 \u52b9\u7387\u7684\u306a\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u8a2d\u8a08\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-23\">3.2 \u4f8b\u5916\u51e6\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-25\">3.3 \u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3092\u9632\u3050\u305f\u3081\u306e\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-27\">\uff14\uff0e\u975e\u540c\u671f\u51e6\u7406\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-28\">4.1 \u30b9\u30ec\u30c3\u30c9\u6570\u306e\u6700\u9069\u5316\u624b\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-30\">4.2 \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3068\u5236\u5fa1<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-32\">4.3 \u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u7279\u5b9a\u3068\u6539\u5584\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-34\">\uff15\uff0e\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u6d3b\u7528\u4f8b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-35\">5.1 \u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306e\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-37\">5.2 Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306eAsync Processing\u6d3b\u7528\u8853<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-39\">5.3 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3067\u306e\u975e\u540c\u671f\u901a\u4fe1\u30d1\u30bf\u30fc\u30f3<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-41\">\u307e\u3068\u3081\u3068\u4eca\u5f8c\u306e\u5b66\u7fd2\u65b9\u91dd<\/a>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">\u306f\u3058\u3081\u306b<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-2\">\n<p>\u73fe\u4ee3\u306eJava\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u975e\u540c\u671f\u51e6\u7406\u306f\u5fc5\u9808\u306e\u30b9\u30ad\u30eb\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306a\u5fdc\u7b54\u6027\u306e\u8981\u6c42\u3001\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u63a1\u7528\u306a\u3069\u3001\u69d8\u3005\u306a\u5834\u9762\u3067\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u304c\u6c42\u3081\u3089\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-3\">\n<h4 class=\"wp-block-heading\" id=\"i-1\">\u306a\u305c\u4eca\u3001\u975e\u540c\u671f\u51e6\u7406\u304c\u91cd\u8981\u306a\u306e\u304b<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-4\">\n<p>\u30001. <strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u8981\u6c42<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-5\">\n<p>\u3000\u3000\u25cf \u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u306e\u5411\u4e0a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-6\">\n<p>\u3000\u3000\u25cf \u30b7\u30b9\u30c6\u30e0\u306e\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8\u6539\u5584<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-7\">\n<p>\u3000\u3000\u25cf \u30ea\u30bd\u30fc\u30b9\u306e\u52b9\u7387\u7684\u306a\u5229\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-8\">\n<p>\u30002. <strong>\u30b7\u30b9\u30c6\u30e0\u306e\u8907\u96d1\u5316<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-9\">\n<p>\u3000\u3000\u25cf \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u666e\u53ca<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-10\">\n<p>\u3000\u3000\u25cf \u5206\u6563\u30b7\u30b9\u30c6\u30e0\u306e\u4e00\u822c\u5316<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-11\">\n<p>\u3000\u3000\u25cf \u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u51e6\u7406\u306e\u9700\u8981\u5897\u52a0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-12\">\n<p>\u30003. <strong>\u958b\u767a\u751f\u7523\u6027\u306e\u5411\u4e0a<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-13\">\n<p>\u3000\u3000\u25cf \u30e2\u30c0\u30f3\u306aJava\u306e\u6a5f\u80fd\u306b\u3088\u308b\u5b9f\u88c5\u306e\u7c21\u7d20\u5316<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-14\">\n<p>\u3000\u3000\u25cf \u975e\u540c\u671f\u51e6\u7406\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3084\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u5145\u5b9f<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-15\">\n<p>\u3000\u3000\u25cf \u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306e\u78ba\u7acb<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-16\">\n<h4 class=\"wp-block-heading\" id=\"i-2\">\u3053\u306e\u8a18\u4e8b\u306e\u76ee\u7684<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-17\">\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001Java\u306b\u304a\u3051\u308b\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u306b\u3064\u3044\u3066\u3001\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u307e\u3067\u4f53\u7cfb\u7684\u306b\u89e3\u8aac\u3057\u307e\u3059\u3002\u521d\u7d1a\u8005\u304b\u3089\u4e2d\u7d1a\u8005\u306eJava\u30a8\u30f3\u30b8\u30cb\u30a2\u3092\u5bfe\u8c61\u306b\u3001\u4ee5\u4e0b\u306e\u5185\u5bb9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-21\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u672c\u8a18\u4e8b\u3067\u5b66\u3079\u308b\u3053\u3068<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-18\">\n<li>\u975e\u540c\u671f\u51e6\u7406\u306e\u57fa\u672c\u6982\u5ff5\u3068\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-19\">\n<li>\u5b9f\u8df5\u7684\u306a\u5b9f\u88c5\u30c6\u30af\u30cb\u30c3\u30af\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-20\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u306e\u65b9\u6cd5<\/li>\n<\/div>\n\n\n<li>\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u6d3b\u7528\u4f8b<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-22\">\n<p>\u5404\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u884c\u53ef\u80fd\u306a\u30b3\u30fc\u30c9\u4f8b\u3068\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u624b\u9806\u3092\u63d0\u4f9b\u3057\u3001\u5b9f\u52d9\u3067\u5373\u5ea7\u306b\u6d3b\u7528\u3067\u304d\u308b\u77e5\u8b58\u306e\u7fd2\u5f97\u3092\u76ee\u6307\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-23\">\n<p>\u305d\u308c\u3067\u306f\u3001Java\u306b\u304a\u3051\u308b\u975e\u540c\u671f\u51e6\u7406\u306e\u4e16\u754c\u3092\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-24\">\n<h2 class=\"wp-block-heading\" id=\"i-3\">\uff11\uff0e\u975e\u540c\u671f\u51e6\u7406\u306e\u57fa\u790e\u77e5\u8b58<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-25\">\n<h3 class=\"wp-block-heading\" id=\"i-4\">1.1 \u540c\u671f\u51e6\u7406vs\u975e\u540c\u671f\u51e6\u7406\uff1a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u9055\u3044<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-26\">\n<p>\u540c\u671f\u51e6\u7406\u3068\u975e\u540c\u671f\u51e6\u7406\u306e\u6700\u3082\u5927\u304d\u306a\u9055\u3044\u306f\u3001\u30bf\u30b9\u30af\u306e\u5b9f\u884c\u65b9\u6cd5\u306b\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u8868\u3067\u4e3b\u306a\u9055\u3044\u3092\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n<div id=\"id-26fe43fe-81a5-4587-a527-99ad7895c6e0\"><div id=\"sgb-css-id-27\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u7279\u6027<\/th><th>\u540c\u671f\u51e6\u7406<\/th><th>\u975e\u540c\u671f\u51e6\u7406<\/th><\/tr><\/thead><tbody><tr><td>\u5b9f\u884c\u9806\u5e8f<\/td><td>\u9806\u6b21\u5b9f\u884c\uff08\u76f4\u5217\uff09<\/td><td>\u4e26\u884c\u5b9f\u884c\uff08\u4e26\u5217\u53ef\u80fd\uff09<\/td><\/tr><tr><td>\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0<\/td><td>\u3042\u308a\uff08\u51e6\u7406\u5b8c\u4e86\u5f85\u3061\uff09<\/td><td>\u306a\u3057\uff08\u4ed6\u306e\u51e6\u7406\u3092\u5b9f\u884c\u53ef\u80fd\uff09<\/td><\/tr><tr><td>\u5b9f\u88c5\u306e\u8907\u96d1\u3055<\/td><td>\u30b7\u30f3\u30d7\u30eb<\/td><td>\u3084\u3084\u8907\u96d1<\/td><\/tr><tr><td>\u30ea\u30bd\u30fc\u30b9\u52b9\u7387<\/td><td>\u4f4e\u3044<\/td><td>\u9ad8\u3044<\/td><\/tr><tr><td>\u9069\u7528\u30b1\u30fc\u30b9<\/td><td>\u9806\u5e8f\u4f9d\u5b58\u306e\u51e6\u7406<\/td><td>I\/O\u51e6\u7406\u3001\u4e26\u5217\u53ef\u80fd\u306a\u51e6\u7406<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-28\">\n<h4 class=\"wp-block-heading\" id=\"i-5\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6bd4\u8f03\u4f8b<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-29\">\n<p>\u5b9f\u969b\u306e\u51e6\u7406\u6642\u9593\u306e\u9055\u3044\u3092\u3001\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u8fbc\u307f\u3092\u4f8b\u306b\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u540c\u671f\u51e6\u7406\u306e\u5834\u5408\npublic void syncProcessing() {\n    \/\/ 3\u3064\u306e\u91cd\u3044\u51e6\u7406\u3092\u9806\u6b21\u5b9f\u884c\n    processFile(\"file1.txt\"); \/\/ 3\u79d2\n    processFile(\"file2.txt\"); \/\/ 3\u79d2\n    processFile(\"file3.txt\"); \/\/ 3\u79d2\n    \/\/ \u5408\u8a08\u5b9f\u884c\u6642\u9593\uff1a\u7d049\u79d2\n}\n\n\/\/ \u975e\u540c\u671f\u51e6\u7406\u306e\u5834\u5408\npublic void asyncProcessing() {\n    CompletableFuture.allOf(\n        CompletableFuture.runAsync(() -&gt; processFile(\"file1.txt\")),\n        CompletableFuture.runAsync(() -&gt; processFile(\"file2.txt\")),\n        CompletableFuture.runAsync(() -&gt; processFile(\"file3.txt\"))\n    ).join();\n    \/\/ \u5408\u8a08\u5b9f\u884c\u6642\u9593\uff1a\u7d043\u79d2\n}<\/pre>\n\n\n<div id=\"sgb-css-id-30\">\n<h3 class=\"wp-block-heading\" id=\"i-6\">1.2 Java\u3067\u975e\u540c\u671f\u51e6\u7406\u304c\u5fc5\u8981\u306a\u30b1\u30fc\u30b95\u9078<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-31\">\n<p><strong>1. \u5927\u91cf\u30c7\u30fc\u30bf\u306e\u51e6\u7406<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-32\">\n<p>\u3000\u25cf \u30d0\u30c3\u30c1\u51e6\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-33\">\n<p>\u3000\u25cf \u30c7\u30fc\u30bf\u5909\u63db\u51e6\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-34\">\n<p>\u3000\u25cf \u30ed\u30b0\u89e3\u6790\u51e6\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-35\">\n<p><strong>2. \u5916\u90e8\u30b7\u30b9\u30c6\u30e0\u3068\u306e\u9023\u643a<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-36\">\n<p>\u3000\u25cf API\u30ea\u30af\u30a8\u30b9\u30c8<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-37\">\n<p>\u3000\u25cf \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-38\">\n<p>\u3000\u25cf \u30d5\u30a1\u30a4\u30ebI\/O<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-39\">\n<p><strong>3. \u4e26\u5217\u8a08\u7b97\u304c\u5fc5\u8981\u306a\u51e6\u7406<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-40\">\n<p>\u3000\u25cf \u753b\u50cf\u30fb\u52d5\u753b\u51e6\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-41\">\n<p>\u3000\u25cf \u79d1\u5b66\u6280\u8853\u8a08\u7b97<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-42\">\n<p>\u3000\u25cf \u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-43\">\n<p><strong>4. \u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u51e6\u7406<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-44\">\n<p>\u3000\u25cf \u30e1\u30fc\u30eb\u9001\u4fe1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-45\">\n<p>\u3000\u25cf \u5b9a\u671f\u7684\u306a\u30c7\u30fc\u30bf\u66f4\u65b0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-46\">\n<p>\u3000\u25cf \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u66f4\u65b0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-47\">\n<p><strong>5. \u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u51e6\u7406<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-48\">\n<p>\u3000\u25cf Web\u30bd\u30b1\u30c3\u30c8\u901a\u4fe1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-49\">\n<p>\u3000\u25cf \u30d7\u30c3\u30b7\u30e5\u901a\u77e5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-50\">\n<p>\u3000\u25cf \u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30c7\u30fc\u30bf\u51e6\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-51\">\n<h3 class=\"wp-block-heading\" id=\"i-7\">1.3 \u975e\u540c\u671f\u51e6\u7406\u306e\u57fa\u672c\u7684\u306a\u4ed5\u7d44\u307f<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-52\">\n<h4 class=\"wp-block-heading\" id=\"i-8\">\u57fa\u672c\u7684\u306a\u51e6\u7406\u30d5\u30ed\u30fc<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-53\">\n<p>\u30001. \u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u304c\u975e\u540c\u671f\u30bf\u30b9\u30af\u3092\u4f5c\u6210<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-54\">\n<p>\u30002. \u5225\u30b9\u30ec\u30c3\u30c9\u3067\u30bf\u30b9\u30af\u3092\u5b9f\u884c<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-55\">\n<p>\u30003. \u7d50\u679c\u53d6\u5f97\u6642\u306b\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u5b9f\u884c<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u57fa\u672c\u7684\u306a\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b\npublic class AsyncExample {\n    public static void main(String[] args) {\n        \/\/ 1. \u975e\u540c\u671f\u30bf\u30b9\u30af\u306e\u4f5c\u6210\n        CompletableFuture&lt;String&gt; future = CompletableFuture.supplyAsync(() -&gt; {\n            \/\/ 2. \u5225\u30b9\u30ec\u30c3\u30c9\u3067\u306e\u51e6\u7406\n            try {\n                Thread.sleep(1000); \/\/ \u91cd\u3044\u51e6\u7406\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n                return \"\u51e6\u7406\u5b8c\u4e86\";\n            } catch (InterruptedException e) {\n                return \"\u30a8\u30e9\u30fc\u767a\u751f\";\n            }\n        });\n\n        \/\/ 3. \u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u306e\u8a2d\u5b9a\n        future.thenAccept(result -&gt; {\n            System.out.println(\"\u7d50\u679c: \" + result);\n        });\n\n        \/\/ \u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u306f\u4ed6\u306e\u51e6\u7406\u3092\u7d9a\u884c\u53ef\u80fd\n        System.out.println(\"\u30e1\u30a4\u30f3\u51e6\u7406\u306f\u7d99\u7d9a...\");\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-56\">\n<h4 class=\"wp-block-heading\" id=\"i-9\">\u30b9\u30ec\u30c3\u30c9\u3068\u30bf\u30b9\u30af\u306e\u95a2\u4fc2<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-57\">\n<p>\u3000\u975e\u540c\u671f\u51e6\u7406\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u8981\u7d20\u304c\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-58\">\n<p>\u3000\u25cf <strong>\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb<\/strong>\uff1a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-59\">\n<p>\u3000\u3000\u25cf \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u30b9\u30ec\u30c3\u30c9\u3092\u7ba1\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-60\">\n<p>\u3000\u3000\u25cf \u30ea\u30bd\u30fc\u30b9\u306e\u52b9\u7387\u7684\u306a\u5229\u7528\u3092\u5b9f\u73fe<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-61\">\n<p>\u3000\u3000\u25cf \u30b9\u30ec\u30c3\u30c9\u306e\u518d\u5229\u7528\u306b\u3088\u308a\u3001\u751f\u6210\u30b3\u30b9\u30c8\u3092\u524a\u6e1b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-62\">\n<p>\u3000\u25cf <strong>\u30bf\u30b9\u30af\u30ad\u30e5\u30fc<\/strong>\uff1a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-63\">\n<p>\u3000\u3000\u25cf \u5b9f\u884c\u5f85\u3061\u306e\u30bf\u30b9\u30af\u3092\u7ba1\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-64\">\n<p>\u3000\u3000\u25cf \u512a\u5148\u9806\u4f4d\u4ed8\u3051\u304c\u53ef\u80fd<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-65\">\n<p>\u3000\u3000\u25cf \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u3068\u9023\u643a\u3057\u3066\u51e6\u7406\u3092\u6700\u9069\u5316<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-66\">\n<h4 class=\"wp-block-heading\" id=\"i-10\">\u975e\u540c\u671f\u51e6\u7406\u306e\u6ce8\u610f\u70b9<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-67\">\n<p>\u30001. <strong>\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u30c6\u30a3<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-68\">\n<p>\u3000\u3000\u25cf \u5171\u6709\u30ea\u30bd\u30fc\u30b9\u3078\u306e\u540c\u6642\u30a2\u30af\u30bb\u30b9\u306b\u6ce8\u610f<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-69\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u540c\u671f\u6a5f\u69cb\u306e\u4f7f\u7528\u304c\u5fc5\u8981<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-70\">\n<p>\u30002. <strong>\u4f8b\u5916\u51e6\u7406<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-71\">\n<p>\u3000\u3000\u25cf \u975e\u540c\u671f\u51e6\u7406\u3067\u306e\u4f8b\u5916\u306f\u5225\u30b9\u30ec\u30c3\u30c9\u3067\u767a\u751f<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-72\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u304c\u91cd\u8981<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-73\">\n<p>\u30003. <strong>\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-74\">\n<p>\u3000\u3000\u25cf \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u30b5\u30a4\u30ba\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-75\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u76e3\u8996<\/p>\n<\/div>\n\n\n<p>\u3000\u3000\u25cf \u30ea\u30bd\u30fc\u30b9\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7<\/p>\n\n\n<div id=\"sgb-css-id-76\">\n<p>\u3053\u306e\u3088\u3046\u306b\u3001\u975e\u540c\u671f\u51e6\u7406\u306f\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-77\">\n<h2 class=\"wp-block-heading\" id=\"i-11\">\uff12\uff0eJava\u306b\u304a\u3051\u308b7\u3064\u306e\u975e\u540c\u671f\u51e6\u7406\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-78\">\n<h3 class=\"wp-block-heading\" id=\"i-12\">2.1 Thread\/Runnable\u306b\u3088\u308b\u57fa\u672c\u5b9f\u88c5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-79\">\n<p>\u6700\u3082\u57fa\u672c\u7684\u306a\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u65b9\u6cd5\u3067\u3059\u3002\u76f4\u63a5\u30b9\u30ec\u30c3\u30c9\u3092\u5236\u5fa1\u3067\u304d\u308b\u53cd\u9762\u3001\u7ba1\u7406\u304c\u8907\u96d1\u306b\u306a\u308a\u3084\u3059\u3044\u7279\u5fb4\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class BasicAsyncExample {\n    public static void main(String[] args) {\n        \/\/ Runnable\u3092\u4f7f\u7528\u3057\u305f\u5b9f\u88c5\n        Runnable task = () -&gt; {\n            try {\n                \/\/ \u975e\u540c\u671f\u3067\u5b9f\u884c\u3059\u308b\u51e6\u7406\n                System.out.println(\"Processing in thread: \" + Thread.currentThread().getName());\n                Thread.sleep(1000);\n                System.out.println(\"Task completed\");\n            } catch (InterruptedException e) {\n                Thread.currentThread().interrupt();\n            }\n        };\n\n        \/\/ \u65b0\u3057\u3044\u30b9\u30ec\u30c3\u30c9\u3067\u5b9f\u884c\n        Thread thread = new Thread(task);\n        thread.start();\n\n        \/\/ \u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u306e\u51e6\u7406\u3092\u7d99\u7d9a\n        System.out.println(\"Main thread continues...\");\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-82\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\"><strong>\u7279\u5fb4\u3068\u4f7f\u7528\u5834\u9762<\/strong><\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-80\">\n<li>\u30b7\u30f3\u30d7\u30eb\u306a\u975e\u540c\u671f\u51e6\u7406\u306b\u9069\u3057\u3066\u3044\u308b<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-81\">\n<li>\u30b9\u30ec\u30c3\u30c9\u306e\u5b8c\u5168\u306a\u5236\u5fa1\u304c\u5fc5\u8981\u306a\u5834\u5408\u306b\u4f7f\u7528<\/li>\n<\/div>\n\n\n<li>\u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\u958b\u767a\u3084\u5b66\u7fd2\u7528\u9014\u306b\u9069\u3057\u3066\u3044\u308b<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-83\">\n<h3 class=\"wp-block-heading\" id=\"i-13\">2.2 ExecutorService\u306b\u3088\u308b\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u7ba1\u7406<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-84\">\n<p>\u30b9\u30ec\u30c3\u30c9\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u3092\u52b9\u7387\u7684\u306b\u7ba1\u7406\u3057\u3001\u30ea\u30bd\u30fc\u30b9\u3092\u6700\u9069\u5316\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ExecutorServiceExample {\n    public static void main(String[] args) {\n        \/\/ \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u4f5c\u6210\n        ExecutorService executor = Executors.newFixedThreadPool(3);\n\n        try {\n            \/\/ \u8907\u6570\u306e\u30bf\u30b9\u30af\u3092\u63d0\u51fa\n            for (int i = 0; i &lt; 5; i++) {\n                final int taskId = i;\n                executor.submit(() -&gt; {\n                    System.out.println(\"Task \" + taskId + \" executing in \" + \n                        Thread.currentThread().getName());\n                    try {\n                        Thread.sleep(1000);\n                    } catch (InterruptedException e) {\n                        Thread.currentThread().interrupt();\n                    }\n                    return \"Task \" + taskId + \" result\";\n                });\n            }\n        } finally {\n            \/\/ \u6b63\u3057\u3044\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u51e6\u7406\n            executor.shutdown();\n            try {\n                if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {\n                    executor.shutdownNow();\n                }\n            } catch (InterruptedException e) {\n                executor.shutdownNow();\n                Thread.currentThread().interrupt();\n            }\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-87\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:#009EF3;color:#FFF\" class=\"sgb-box-simple__title\"><strong>\u5229\u70b9<\/strong><\/div><div class=\"sgb-box-simple__body\" style=\"border-color:#009EF3;background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-85\">\n<li>\u30b9\u30ec\u30c3\u30c9\u306e\u518d\u5229\u7528\u306b\u3088\u308b\u30ea\u30bd\u30fc\u30b9\u52b9\u7387\u306e\u5411\u4e0a<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-86\">\n<li>\u30bf\u30b9\u30af\u306e\u30ad\u30e5\u30fc\u30a4\u30f3\u30b0\u3068\u5b9f\u884c\u7ba1\u7406<\/li>\n<\/div>\n\n\n<li>\u67d4\u8edf\u306a\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u8a2d\u5b9a<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-88\">\n<h3 class=\"wp-block-heading\" id=\"i-14\">2.3 Future\/Callable\u3067Java\u306e\u975e\u540c\u671f\u51e6\u7406\u3092\u5236\u5fa1\u3059\u308b<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-89\">\n<p>\u623b\u308a\u5024\u306e\u3042\u308b\u975e\u540c\u671f\u51e6\u7406\u3092\u5b9f\u88c5\u3059\u308b\u969b\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class FutureCallableExample {\n    public static void main(String[] args) {\n        ExecutorService executor = Executors.newSingleThreadExecutor();\n\n        try {\n            \/\/ Callable\u30bf\u30b9\u30af\u306e\u4f5c\u6210\n            Callable&lt;Integer&gt; task = () -&gt; {\n                Thread.sleep(2000); \/\/ \u91cd\u3044\u51e6\u7406\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n                return 42;\n            };\n\n            \/\/ Future\u7d4c\u7531\u3067\u5b9f\u884c\n            Future&lt;Integer&gt; future = executor.submit(task);\n\n            \/\/ \u4ed6\u306e\u51e6\u7406\u3092\u5b9f\u884c\u53ef\u80fd\n            System.out.println(\"Waiting for result...\");\n\n            try {\n                \/\/ \u7d50\u679c\u306e\u53d6\u5f97\uff08\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\uff09\n                Integer result = future.get(3, TimeUnit.SECONDS);\n                System.out.println(\"Result: \" + result);\n            } catch (TimeoutException e) {\n                future.cancel(true);\n                System.out.println(\"Task timed out\");\n            }\n        } finally {\n            executor.shutdownNow();\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-92\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\"><strong>\u4e3b\u306a\u6a5f\u80fd<\/strong><\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-90\">\n<li>\u51e6\u7406\u7d50\u679c\u306e\u53d6\u5f97\u304c\u53ef\u80fd<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-91\">\n<li>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/li>\n<\/div>\n\n\n<li>\u30bf\u30b9\u30af\u306e\u30ad\u30e3\u30f3\u30bb\u30eb\u6a5f\u80fd<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-93\">\n<h3 class=\"wp-block-heading\" id=\"i-15\">2.4 CompletableFuture\u3092\u4f7f\u7528\u3057\u305f\u30e2\u30c0\u30f3\u306a\u5b9f\u88c5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-94\">\n<p>Java 8\u4ee5\u964d\u3067\u5c0e\u5165\u3055\u308c\u305f\u3001\u3088\u308a\u67d4\u8edf\u306a\u975e\u540c\u671f\u51e6\u7406\u306eAPI\u3002\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30bf\u30a4\u30eb\u3067\u30c1\u30a7\u30fc\u30f3\u51e6\u7406\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class CompletableFutureExample {\n    public static void main(String[] args) {\n        \/\/ \u975e\u540c\u671f\u51e6\u7406\u306e\u9023\u9396\n        CompletableFuture&lt;String&gt; future = CompletableFuture\n            .supplyAsync(() -&gt; {\n                \/\/ \u7b2c\u4e00\u6bb5\u968e\u306e\u51e6\u7406\n                return \"Hello\";\n            })\n            .thenApplyAsync(s -&gt; {\n                \/\/ \u7b2c\u4e8c\u6bb5\u968e\u306e\u51e6\u7406\n                return s + \" CompletableFuture\";\n            })\n            .thenApplyAsync(String::toUpperCase);\n\n        \/\/ \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n        future\n            .thenAccept(System.out::println)\n            .exceptionally(throwable -&gt; {\n                System.err.println(\"Error: \" + throwable.getMessage());\n                return null;\n            });\n\n        \/\/ \u8907\u6570\u306e\u975e\u540c\u671f\u51e6\u7406\u306e\u7d44\u307f\u5408\u308f\u305b\n        CompletableFuture&lt;String&gt; future1 = CompletableFuture.supplyAsync(() -&gt; \"First\");\n        CompletableFuture&lt;String&gt; future2 = CompletableFuture.supplyAsync(() -&gt; \"Second\");\n\n        CompletableFuture.allOf(future1, future2)\n            .thenRun(() -&gt; System.out.println(\"All tasks completed\"));\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-97\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\"><strong>\u7279\u5fb4<\/strong><\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-95\">\n<li>\u975e\u540c\u671f\u51e6\u7406\u306e\u9023\u9396\u304c\u53ef\u80fd<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-96\">\n<li>\u5ba3\u8a00\u7684\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/li>\n<\/div>\n\n\n<li>\u8907\u6570\u306e\u975e\u540c\u671f\u51e6\u7406\u306e\u7d44\u307f\u5408\u308f\u305b\u304c\u5bb9\u6613<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-98\">\n<h3 class=\"wp-block-heading\" id=\"i-16\">2.5 ParallelStream\u306b\u3088\u308b\u7c21\u6f54\u306a\u975e\u540c\u671f\u51e6\u7406<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-99\">\n<p>\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u4e26\u5217\u51e6\u7406\u3092\u7c21\u6f54\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ParallelStreamExample {\n    public static void main(String[] args) {\n        List&lt;Integer&gt; numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n\n        \/\/ \u4e26\u5217\u51e6\u7406\u306e\u5b9f\u884c\n        long sum = numbers.parallelStream()\n            .filter(n -&gt; n % 2 == 0)    \/\/ \u5076\u6570\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\n            .mapToLong(n -&gt; {\n                try {\n                    Thread.sleep(100);   \/\/ \u91cd\u3044\u51e6\u7406\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n                    return n * n;\n                } catch (InterruptedException e) {\n                    Thread.currentThread().interrupt();\n                    return 0;\n                }\n            })\n            .sum();\n\n        System.out.println(\"Sum of squares of even numbers: \" + sum);\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-102\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\"><strong>\u4f7f\u7528\u5834\u9762<\/strong><\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-100\">\n<li>\u30c7\u30fc\u30bf\u306e\u4e26\u5217\u51e6\u7406<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-101\">\n<li>\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30bf\u30a4\u30eb\u306e\u51e6\u7406<\/li>\n<\/div>\n\n\n<li>\u7c21\u6f54\u306a\u5b9f\u88c5\u304c\u5fc5\u8981\u306a\u5834\u5408<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-103\">\n<h3 class=\"wp-block-heading\" id=\"i-17\">2.6 Spring Framework @Async\u306b\u3088\u308b\u5ba3\u8a00\u7684\u975e\u540c\u671f\u51e6\u7406<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-104\">\n<p>Spring Framework\u3092\u4f7f\u7528\u3057\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u975e\u540c\u671f\u51e6\u7406\u5b9f\u88c5\u65b9\u6cd5\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Configuration\n@EnableAsync\npublic class AsyncConfig implements AsyncConfigurer {\n    @Override\n    public Executor getAsyncExecutor() {\n        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();\n        executor.setCorePoolSize(5);\n        executor.setMaxPoolSize(10);\n        executor.setQueueCapacity(25);\n        executor.initialize();\n        return executor;\n    }\n}\n\n@Service\npublic class AsyncService {\n    @Async\n    public CompletableFuture&lt;String&gt; asyncMethod() {\n        try {\n            Thread.sleep(1000);\n            return CompletableFuture.completedFuture(\"Async process completed\");\n        } catch (InterruptedException e) {\n            Thread.currentThread().interrupt();\n            return CompletableFuture.failedFuture(e);\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-107\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:#009EF3;color:#FFF\" class=\"sgb-box-simple__title\"><strong>\u5229\u70b9<\/strong><\/div><div class=\"sgb-box-simple__body\" style=\"border-color:#009EF3;background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-105\">\n<li>\u5ba3\u8a00\u7684\u306a\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-106\">\n<li>Spring Framework\u306e\u6a5f\u80fd\u3068\u306e\u7d71\u5408<\/li>\n<\/div>\n\n\n<li>AOP based implementation<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-108\">\n<h3 class=\"wp-block-heading\" id=\"i-18\">2.7 Reactive\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u3088\u308b\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0I\/O<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-109\">\n<p>Project Reactor\u3084RxJava\u3092\u4f7f\u7528\u3057\u305f\u3001\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ReactiveExample {\n    public static void main(String[] args) {\n        \/\/ Flux\u3092\u4f7f\u7528\u3057\u305f\u30b9\u30c8\u30ea\u30fc\u30e0\u51e6\u7406\n        Flux.just(1, 2, 3, 4, 5)\n            .filter(n -&gt; n % 2 == 0)\n            .map(n -&gt; n * 2)\n            .subscribe(\n                n -&gt; System.out.println(\"Received: \" + n),\n                error -&gt; System.err.println(\"Error: \" + error),\n                () -&gt; System.out.println(\"Completed\")\n            );\n\n        \/\/ \u30d0\u30c3\u30af\u30d7\u30ec\u30c3\u30b7\u30e3\u30fc\u306e\u5b9f\u88c5\n        Flux.range(1, 100)\n            .onBackpressureBuffer(10)\n            .subscribeOn(Schedulers.boundedElastic())\n            .subscribe(new BaseSubscriber&lt;Integer&gt;() {\n                @Override\n                protected void hookOnSubscribe(Subscription subscription) {\n                    request(1);\n                }\n\n                @Override\n                protected void hookOnNext(Integer value) {\n                    System.out.println(\"Received: \" + value);\n                    request(1);\n                }\n            });\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-113\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--sgb-main-color);color:#FFF\" class=\"sgb-box-simple__title\"><strong>\u7279\u5fb4<\/strong><\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--sgb-main-color);background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-110\">\n<li>\u30d0\u30c3\u30af\u30d7\u30ec\u30c3\u30b7\u30e3\u30fc\u306e\u30b5\u30dd\u30fc\u30c8<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-111\">\n<li>\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0I\/O<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-112\">\n<li>\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u5ba3\u8a00\u7684\u306a\u51e6\u7406<\/li>\n<\/div>\n\n\n<li>\u9ad8\u5ea6\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-114\">\n<p>\u5404\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u306b\u306f\u3001\u305d\u308c\u305e\u308c\u9069\u3057\u305f\u4f7f\u7528\u5834\u9762\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u8868\u3067\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n<div id=\"id-cd2700ad-b35c-4008-bce9-82921438b827\"><div id=\"sgb-css-id-115\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/th><th>\u8907\u96d1\u3055<\/th><th>\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3<\/th><th>\u7528\u9014<\/th><\/tr><\/thead><tbody><tr><td>Thread\/Runnable<\/td><td>\u4f4e<\/td><td>\u4f4e<\/td><td>\u30b7\u30f3\u30d7\u30eb\u306a\u975e\u540c\u671f\u51e6\u7406<\/td><\/tr><tr><td>ExecutorService<\/td><td>\u4e2d<\/td><td>\u4e2d<\/td><td>\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u7ba1\u7406\u304c\u5fc5\u8981\u306a\u5834\u5408<\/td><\/tr><tr><td>Future\/Callable<\/td><td>\u4e2d<\/td><td>\u4e2d<\/td><td>\u7d50\u679c\u304c\u5fc5\u8981\u306a\u975e\u540c\u671f\u51e6\u7406<\/td><\/tr><tr><td>CompletableFuture<\/td><td>\u9ad8<\/td><td>\u9ad8<\/td><td>\u8907\u96d1\u306a\u975e\u540c\u671f\u51e6\u7406\u30c1\u30a7\u30fc\u30f3<\/td><\/tr><tr><td>ParallelStream<\/td><td>\u4f4e<\/td><td>\u4e2d<\/td><td>\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u4e26\u5217\u51e6\u7406<\/td><\/tr><tr><td>Spring @Async<\/td><td>\u4f4e<\/td><td>\u4e2d<\/td><td>Spring\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3<\/td><\/tr><tr><td>Reactive<\/td><td>\u9ad8<\/td><td>\u9ad8<\/td><td>\u30b9\u30c8\u30ea\u30fc\u30e0\u51e6\u7406\u3001\u9ad8\u8ca0\u8377\u30b7\u30b9\u30c6\u30e0<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-116\">\n<h2 class=\"wp-block-heading\" id=\"i-19\">\uff13\uff0e\u5b9f\u8df5\u7684\u306a\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-117\">\n<h3 class=\"wp-block-heading\" id=\"i-20\">3.1 \u52b9\u7387\u7684\u306a\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u8a2d\u8a08\u65b9\u6cd5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-118\">\n<p>\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u9069\u5207\u306a\u8a2d\u8a08\u306f\u3001\u975e\u540c\u671f\u51e6\u7406\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u76f4\u63a5\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-119\">\n<h4 class=\"wp-block-heading\" id=\"i-21\">\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u8a2d\u8a08\u306e\u57fa\u672c\u539f\u5247<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class OptimizedThreadPoolExample {\n    public static ExecutorService createOptimizedThreadPool() {\n        \/\/ \u30d7\u30ed\u30bb\u30c3\u30b5\u6570\u306e\u53d6\u5f97\n        int processors = Runtime.getRuntime().availableProcessors();\n\n        \/\/ \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u8a2d\u5b9a\n        ThreadPoolExecutor executor = new ThreadPoolExecutor(\n            processors,                    \/\/ \u30b3\u30a2\u30b9\u30ec\u30c3\u30c9\u6570\n            processors * 2,                \/\/ \u6700\u5927\u30b9\u30ec\u30c3\u30c9\u6570\n            60L, TimeUnit.SECONDS,        \/\/ \u30a2\u30a4\u30c9\u30eb\u30b9\u30ec\u30c3\u30c9\u306e\u751f\u5b58\u6642\u9593\n            new LinkedBlockingQueue&lt;&gt;(1000), \/\/ \u30bf\u30b9\u30af\u30ad\u30e5\u30fc\u306e\u6700\u5927\u30b5\u30a4\u30ba\n            new ThreadPoolExecutor.CallerRunsPolicy() \/\/ \u62d2\u5426\u30dd\u30ea\u30b7\u30fc\n        );\n\n        \/\/ \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u76e3\u8996\u8a2d\u5b9a\n        executor.setRejectedExecutionHandler((r, e) -&gt; {\n            System.out.println(\"Task rejected: \" + r.toString());\n            throw new RejectedExecutionException(\"Task rejected\");\n        });\n\n        return executor;\n    }\n\n    \/\/ \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u4f7f\u7528\u4f8b\n    public static void main(String[] args) {\n        ExecutorService executor = createOptimizedThreadPool();\n        try {\n            \/\/ \u30bf\u30b9\u30af\u306e\u5b9f\u884c\n            for (int i = 0; i &lt; 100; i++) {\n                executor.submit(() -&gt; {\n                    System.out.println(\"Task executing in: \" + \n                        Thread.currentThread().getName());\n                    return \"Task result\";\n                });\n            }\n        } finally {\n            executor.shutdown();\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-120\">\n<h4 class=\"wp-block-heading\" id=\"i-22\">\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u8a2d\u8a08\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-121\">\n<p>\u30001. <strong>\u9069\u5207\u306a\u30b9\u30ec\u30c3\u30c9\u6570\u306e\u8a2d\u5b9a<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-122\">\n<p>\u3000\u3000\u25cf CPU\u96c6\u4e2d\u578b\u30bf\u30b9\u30af\uff1a<code>\u30d7\u30ed\u30bb\u30c3\u30b5\u6570 + 1<\/code><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-123\">\n<p>\u3000\u3000\u25cf I\/O\u96c6\u4e2d\u578b\u30bf\u30b9\u30af\uff1a<code>\u30d7\u30ed\u30bb\u30c3\u30b5\u6570 * 2<\/code><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-124\">\n<p>\u3000\u3000\u25cf \u6df7\u5408\u30bf\u30b9\u30af\uff1a<code>\u30d7\u30ed\u30bb\u30c3\u30b5\u6570 * 1.5<\/code>\uff08\u56db\u6368\u4e94\u5165\uff09<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-125\">\n<p>\u30002. <strong>\u30ad\u30e5\u30fc\u30b5\u30a4\u30ba\u306e\u6700\u9069\u5316<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-126\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u5236\u7d04\u3092\u8003\u616e<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-127\">\n<p>\u3000\u3000\u25cf \u30bf\u30b9\u30af\u306e\u512a\u5148\u9806\u4f4d\u4ed8\u3051<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-128\">\n<p>\u3000\u3000\u25cf \u30d0\u30c3\u30af\u30d7\u30ec\u30c3\u30b7\u30e3\u30fc\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-129\">\n<h3 class=\"wp-block-heading\" id=\"i-23\">3.2 \u4f8b\u5916\u51e6\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-130\">\n<p>\u975e\u540c\u671f\u51e6\u7406\u306b\u304a\u3051\u308b\u4f8b\u5916\u306f\u3001\u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u3068\u306f\u7570\u306a\u308b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\u767a\u751f\u3059\u308b\u305f\u3081\u3001\u9069\u5207\u306a\u51e6\u7406\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class AsyncExceptionHandlingExample {\n    public static void main(String[] args) {\n        CompletableFuture&lt;String&gt; future = CompletableFuture\n            .supplyAsync(() -&gt; {\n                if (Math.random() &lt; 0.5) {\n                    throw new RuntimeException(\"Simulated error\");\n                }\n                return \"Success\";\n            })\n            .handle((result, ex) -&gt; {\n                if (ex != null) {\n                    \/\/ \u4f8b\u5916\u306e\u30ed\u30b0\u8a18\u9332\n                    logger.error(\"Async operation failed\", ex);\n                    \/\/ \u4ee3\u66ff\u5024\u306e\u8fd4\u5374\n                    return \"Fallback value\";\n                }\n                return result;\n            })\n            .whenComplete((result, ex) -&gt; {\n                \/\/ \u5b8c\u4e86\u6642\u306e\u51e6\u7406\uff08\u6210\u529f\/\u5931\u6557\u4e21\u65b9\u3067\u5b9f\u884c\uff09\n                System.out.println(\"Operation completed with result: \" + result);\n            });\n\n        \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u51e6\u7406\u306e\u5b9f\u88c5\n        try {\n            String result = future.get(5, TimeUnit.SECONDS);\n        } catch (TimeoutException e) {\n            \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u6642\u306e\u51e6\u7406\n            future.cancel(true);\n        }\n    }\n\n    \/\/ \u69cb\u9020\u5316\u3055\u308c\u305f\u4f8b\u5916\u51e6\u7406\n    @Async\n    public CompletableFuture&lt;String&gt; processAsync() {\n        return CompletableFuture.supplyAsync(() -&gt; {\n            try {\n                \/\/ \u5371\u967a\u306a\u51e6\u7406\n                return performRiskyOperation();\n            } catch (Exception e) {\n                \/\/ \u30d3\u30b8\u30cd\u30b9\u4f8b\u5916\u3078\u306e\u5909\u63db\n                throw new BusinessException(\"Operation failed\", e);\n            }\n        }).exceptionally(ex -&gt; {\n            if (ex instanceof BusinessException) {\n                return handleBusinessException((BusinessException) ex);\n            } else {\n                return handleSystemException(ex);\n            }\n        });\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-131\">\n<h4 class=\"wp-block-heading\" id=\"i-24\">\u4f8b\u5916\u51e6\u7406\u306e\u30dd\u30a4\u30f3\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-132\">\n<p>\u30001. <strong>\u4f8b\u5916\u306e\u7a2e\u985e\u306b\u5fdc\u3058\u305f\u51e6\u7406<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-133\">\n<p>\u3000\u3000\u25cf \u4e00\u6642\u7684\u306a\u4f8b\u5916\uff1a\u30ea\u30c8\u30e9\u30a4<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-134\">\n<p>\u3000\u3000\u25cf \u6c38\u7d9a\u7684\u306a\u4f8b\u5916\uff1a\u4ee3\u66ff\u51e6\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-135\">\n<p>\u3000\u3000\u25cf \u30b7\u30b9\u30c6\u30e0\u4f8b\u5916\uff1a\u30ed\u30b0\u8a18\u9332\u3068\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-136\">\n<p>\u30002. <strong>\u30b0\u30ec\u30fc\u30b9\u30d5\u30eb\u30c7\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-137\">\n<p>\u3000\u3000\u25cf \u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u5024\u306e\u63d0\u4f9b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-138\">\n<p>\u3000\u3000\u25cf \u90e8\u5206\u7684\u306a\u7d50\u679c\u306e\u8a31\u5bb9<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-139\">\n<p>\u3000\u3000\u25cf \u30e6\u30fc\u30b6\u30fc\u3078\u306e\u9069\u5207\u306a\u901a\u77e5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-140\">\n<h3 class=\"wp-block-heading\" id=\"i-25\">3.3 \u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3092\u9632\u3050\u305f\u3081\u306e\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-141\">\n<p>\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u306f\u975e\u540c\u671f\u51e6\u7406\u306b\u304a\u3051\u308b\u91cd\u5927\u306a\u554f\u984c\u306e\u4e00\u3064\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3\u3067\u9632\u6b62\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class DeadlockPreventionExample {\n    \/\/ \u30ea\u30bd\u30fc\u30b9\u306e\u9806\u5e8f\u4ed8\u3051\u306b\u3088\u308b\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u9632\u6b62\n    public class ResourceManager {\n        private final Object resource1 = new Object();\n        private final Object resource2 = new Object();\n\n        public void process() {\n            \/\/ \u30ea\u30bd\u30fc\u30b9\u306e\u7372\u5f97\u9806\u5e8f\u3092\u56fa\u5b9a\n            synchronized (resource1) {\n                synchronized (resource2) {\n                    \/\/ \u5b89\u5168\u306a\u51e6\u7406\n                }\n            }\n        }\n    }\n\n    \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306b\u3088\u308b\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u9632\u6b62\n    public boolean processWithTimeout(Lock lock1, Lock lock2) {\n        try {\n            if (lock1.tryLock(1, TimeUnit.SECONDS)) {\n                try {\n                    if (lock2.tryLock(1, TimeUnit.SECONDS)) {\n                        try {\n                            \/\/ \u51e6\u7406\u5b9f\u884c\n                            return true;\n                        } finally {\n                            lock2.unlock();\n                        }\n                    }\n                } finally {\n                    lock1.unlock();\n                }\n            }\n        } catch (InterruptedException e) {\n            Thread.currentThread().interrupt();\n        }\n        return false;\n    }\n\n    \/\/ \u975e\u540c\u671f\u51e6\u7406\u3067\u306e\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u9632\u6b62\n    public CompletableFuture&lt;String&gt; safeAsyncProcess() {\n        return CompletableFuture\n            .supplyAsync(() -&gt; \"Step 1\")\n            .thenApplyAsync(result -&gt; result + \" -&gt; Step 2\")\n            .orTimeout(3, TimeUnit.SECONDS) \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\n            .exceptionally(ex -&gt; \"Process failed: \" + ex.getMessage());\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-142\">\n<h4 class=\"wp-block-heading\" id=\"i-26\">\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u9632\u6b62\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-143\">\n<p>\u30001. <strong>\u30ea\u30bd\u30fc\u30b9\u306e\u9806\u5e8f\u4ed8\u3051<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-144\">\n<p>\u3000\u3000\u25cf \u4e00\u8cab\u3057\u305f\u9806\u5e8f\u3067\u306e\u30ed\u30c3\u30af\u53d6\u5f97<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-145\">\n<p>\u3000\u3000\u25cf \u30ea\u30bd\u30fc\u30b9\u306e\u968e\u5c64\u69cb\u9020\u306e\u5b9a\u7fa9<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-146\">\n<p>\u3000\u3000\u25cf \u30b0\u30ed\u30fc\u30d0\u30eb\u306a\u9806\u5e8f\u4ed8\u3051\u306e\u7dad\u6301<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-147\">\n<p>\u30002. <strong>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306e\u6d3b\u7528<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-148\">\n<p>\u3000\u3000\u25cf \u30ed\u30c3\u30af\u53d6\u5f97\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-149\">\n<p>\u3000\u3000\u25cf \u51e6\u7406\u5168\u4f53\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-150\">\n<p>\u3000\u3000\u25cf \u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u691c\u51fa\u3068\u89e3\u6c7a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-151\">\n<p>\u30003. <strong>\u30ed\u30c3\u30af\u306e\u6700\u5c0f\u5316<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-152\">\n<p>\u3000\u3000\u25cf \u30ed\u30c3\u30af\u306e\u7bc4\u56f2\u3092\u6700\u5c0f\u9650\u306b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-153\">\n<p>\u3000\u3000\u25cf \u975e\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u51e6\u7406\u306e\u6d3b\u7528<\/p>\n<\/div>\n\n\n<p>\u3000\u3000\u25cf \u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u4f7f\u7528<\/p>\n\n\n<div id=\"sgb-css-id-154\">\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u5805\u7262\u306a\u975e\u540c\u671f\u51e6\u7406\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-155\">\n<h2 class=\"wp-block-heading\" id=\"i-27\">\uff14\uff0e\u975e\u540c\u671f\u51e6\u7406\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-156\">\n<h3 class=\"wp-block-heading\" id=\"i-28\">4.1 \u30b9\u30ec\u30c3\u30c9\u6570\u306e\u6700\u9069\u5316\u624b\u6cd5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-157\">\n<p>\u30b9\u30ec\u30c3\u30c9\u6570\u306e\u6700\u9069\u5316\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5927\u304d\u304f\u5de6\u53f3\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ThreadOptimizationExample {\n    public static class ThreadPoolMonitor {\n        private final ThreadPoolExecutor executor;\n        private final AtomicLong totalTasksCompleted = new AtomicLong(0);\n        private final AtomicLong totalProcessingTime = new AtomicLong(0);\n\n        public ThreadPoolMonitor(ThreadPoolExecutor executor) {\n            this.executor = executor;\n        }\n\n        \/\/ \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6307\u6a19\u3092\u8a08\u6e2c\n        public void monitorPerformance() {\n            ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();\n            scheduler.scheduleAtFixedRate(() -&gt; {\n                System.out.println(\"===== Thread Pool Statistics =====\");\n                System.out.println(\"Active Threads: \" + executor.getActiveCount());\n                System.out.println(\"Pool Size: \" + executor.getPoolSize());\n                System.out.println(\"Queue Size: \" + executor.getQueue().size());\n                System.out.println(\"Completed Tasks: \" + totalTasksCompleted.get());\n\n                \/\/ \u5e73\u5747\u51e6\u7406\u6642\u9593\u306e\u8a08\u7b97\n                long completedTasks = totalTasksCompleted.get();\n                if (completedTasks &gt; 0) {\n                    double avgProcessingTime = \n                        (double) totalProcessingTime.get() \/ completedTasks;\n                    System.out.println(\"Avg Processing Time: \" + \n                        String.format(\"%.2f ms\", avgProcessingTime));\n                }\n            }, 0, 5, TimeUnit.SECONDS);\n        }\n\n        \/\/ \u30bf\u30b9\u30af\u5b9f\u884c\u6642\u9593\u306e\u8a18\u9332\n        public void recordTaskCompletion(long processingTime) {\n            totalTasksCompleted.incrementAndGet();\n            totalProcessingTime.addAndGet(processingTime);\n        }\n    }\n\n    \/\/ \u6700\u9069\u5316\u3055\u308c\u305f\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u4f5c\u6210\n    public static ThreadPoolExecutor createOptimizedThreadPool() {\n        int corePoolSize = Runtime.getRuntime().availableProcessors();\n        int maximumPoolSize = corePoolSize * 2;\n\n        return new ThreadPoolExecutor(\n            corePoolSize,\n            maximumPoolSize,\n            60L, TimeUnit.SECONDS,\n            new ArrayBlockingQueue&lt;&gt;(1000),\n            new ThreadPoolExecutor.CallerRunsPolicy()\n        ) {\n            @Override\n            protected void beforeExecute(Thread t, Runnable r) {\n                \/\/ \u30bf\u30b9\u30af\u5b9f\u884c\u524d\u306e\u51e6\u7406\n                super.beforeExecute(t, r);\n            }\n\n            @Override\n            protected void afterExecute(Runnable r, Throwable t) {\n                \/\/ \u30bf\u30b9\u30af\u5b9f\u884c\u5f8c\u306e\u51e6\u7406\n                super.afterExecute(r, t);\n            }\n        };\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-158\">\n<h4 class=\"wp-block-heading\" id=\"i-29\">\u30b9\u30ec\u30c3\u30c9\u6570\u6700\u9069\u5316\u306e\u30dd\u30a4\u30f3\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-159\">\n<p>\u30001. <strong>\u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u306b\u57fa\u3065\u304f\u8abf\u6574<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-160\">\n<p>\u3000\u3000\u25cf CPU\u4f7f\u7528\u7387\u306e\u76e3\u8996<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-161\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u78ba\u8a8d<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-162\">\n<p>\u3000\u3000\u25cf I\/O\u5f85\u3061\u6642\u9593\u306e\u8003\u616e<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-163\">\n<p>\u30002. <strong>\u52d5\u7684\u306a\u30b9\u30ec\u30c3\u30c9\u6570\u8abf\u6574<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-164\">\n<p>\u3000\u3000\u25cf \u8ca0\u8377\u306b\u5fdc\u3058\u305f\u5897\u6e1b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-165\">\n<p>\u3000\u3000\u25cf \u30ad\u30e5\u30fc\u9577\u306b\u57fa\u3065\u304f\u8abf\u6574<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-166\">\n<p>\u3000\u3000\u25cf \u30ec\u30a4\u30c6\u30f3\u30b7\u306e\u76e3\u8996<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-167\">\n<h3 class=\"wp-block-heading\" id=\"i-30\">4.2 \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3068\u5236\u5fa1<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-168\">\n<p>\u975e\u540c\u671f\u51e6\u7406\u306b\u304a\u3051\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u9632\u304e\u3001\u52b9\u7387\u7684\u306a\u30e1\u30e2\u30ea\u4f7f\u7528\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class MemoryMonitoringExample {\n    private static final Runtime runtime = Runtime.getRuntime();\n\n    \/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u72b6\u6cc1\u306e\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\n    public static void monitorMemoryUsage() {\n        ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();\n        scheduler.scheduleAtFixedRate(() -&gt; {\n            long totalMemory = runtime.totalMemory();\n            long freeMemory = runtime.freeMemory();\n            long usedMemory = totalMemory - freeMemory;\n\n            System.out.println(\"===== Memory Statistics =====\");\n            System.out.println(\"Used Memory: \" + \n                formatSize(usedMemory));\n            System.out.println(\"Free Memory: \" + \n                formatSize(freeMemory));\n            System.out.println(\"Total Memory: \" + \n                formatSize(totalMemory));\n            System.out.println(\"Max Memory: \" + \n                formatSize(runtime.maxMemory()));\n        }, 0, 10, TimeUnit.SECONDS);\n    }\n\n    \/\/ \u30e1\u30e2\u30ea\u30b5\u30a4\u30ba\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\n    private static String formatSize(long bytes) {\n        return String.format(\"%.2f MB\", bytes \/ (1024.0 * 1024.0));\n    }\n\n    \/\/ \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u9632\u6b62\u306e\u305f\u3081\u306eWeakReference\u306e\u4f7f\u7528\u4f8b\n    public static class CacheManager&lt;K, V&gt; {\n        private final Map&lt;K, WeakReference&lt;V&gt;&gt; cache = new ConcurrentHashMap&lt;&gt;();\n\n        public void put(K key, V value) {\n            cache.put(key, new WeakReference&lt;&gt;(value));\n        }\n\n        public V get(K key) {\n            WeakReference&lt;V&gt; ref = cache.get(key);\n            if (ref != null) {\n                V value = ref.get();\n                if (value == null) {\n                    cache.remove(key);\n                }\n                return value;\n            }\n            return null;\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-169\">\n<h4 class=\"wp-block-heading\" id=\"i-31\">\u30e1\u30e2\u30ea\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-170\">\n<p>\u30001. <strong>\u30ea\u30bd\u30fc\u30b9\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-171\">\n<p>\u3000\u3000\u25cf AutoCloseable\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-172\">\n<p>\u3000\u3000\u25cf try-with-resources\u306e\u4f7f\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-173\">\n<p>\u3000\u3000\u25cf \u660e\u793a\u7684\u306a\u30ea\u30bd\u30fc\u30b9\u89e3\u653e<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-174\">\n<p>\u30002. <strong>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u9632\u6b62<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-175\">\n<p>\u3000\u3000\u25cf WeakReference\u306e\u9069\u5207\u306a\u4f7f\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-176\">\n<p>\u3000\u3000\u25cf \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u7ba1\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-177\">\n<p>\u3000\u3000\u25cf \u5faa\u74b0\u53c2\u7167\u306e\u56de\u907f<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-178\">\n<h3 class=\"wp-block-heading\" id=\"i-32\">4.3 \u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u7279\u5b9a\u3068\u6539\u5584\u65b9\u6cd5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-179\">\n<p>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u3092\u7279\u5b9a\u3057\u3001\u52b9\u679c\u7684\u306a\u6539\u5584\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class PerformanceAnalyzer {\n    \/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6e2c\u5b9a\u7528\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\n    @Retention(RetentionPolicy.RUNTIME)\n    @Target(ElementType.METHOD)\n    public @interface Measure {\n        String value() default \"\";\n    }\n\n    \/\/ \u30a2\u30b9\u30da\u30af\u30c8\u306b\u3088\u308b\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6e2c\u5b9a\n    @Aspect\n    @Component\n    public static class PerformanceAspect {\n        private static final Logger logger = \n            LoggerFactory.getLogger(PerformanceAspect.class);\n\n        @Around(\"@annotation(measure)\")\n        public Object measureExecutionTime(ProceedingJoinPoint joinPoint, \n                                        Measure measure) throws Throwable {\n            long startTime = System.nanoTime();\n            try {\n                return joinPoint.proceed();\n            } finally {\n                long duration = System.nanoTime() - startTime;\n                logger.info(\"{}: {} took {} ms\", \n                    measure.value(),\n                    joinPoint.getSignature().getName(),\n                    duration \/ 1_000_000.0);\n            }\n        }\n    }\n\n    \/\/ \u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u5206\u6790\u7528\u306e\u30e1\u30c8\u30ea\u30af\u30b9\u53ce\u96c6\n    public static class MetricsCollector {\n        private final Map&lt;String, Histogram&gt; metrics = new ConcurrentHashMap&lt;&gt;();\n\n        public void recordExecutionTime(String operation, long duration) {\n            metrics.computeIfAbsent(operation, \n                k -&gt; new Histogram(new UniformReservoir()))\n                .update(duration);\n        }\n\n        public void printStatistics() {\n            metrics.forEach((operation, histogram) -&gt; {\n                System.out.println(\"===== \" + operation + \" Statistics =====\");\n                System.out.println(\"Mean: \" + histogram.getSnapshot().getMean());\n                System.out.println(\"99th Percentile: \" + \n                    histogram.getSnapshot().get99thPercentile());\n                System.out.println(\"Max: \" + histogram.getSnapshot().getMax());\n            });\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-180\">\n<h4 class=\"wp-block-heading\" id=\"i-33\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6539\u5584\u306e\u30dd\u30a4\u30f3\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-181\">\n<p>\u30001. <strong>\u6e2c\u5b9a\u3068\u5206\u6790<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-182\">\n<p>\u3000\u3000\u25cf \u30e1\u30c8\u30ea\u30af\u30b9\u306e\u7d99\u7d9a\u7684\u306a\u53ce\u96c6<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-183\">\n<p>\u3000\u3000\u25cf \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-184\">\n<p>\u3000\u3000\u25cf \u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306e\u7279\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-185\">\n<p>\u30002. <strong>\u6700\u9069\u5316\u6226\u7565<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-186\">\n<p>\u3000\u3000\u25cf \u30d0\u30c3\u30c1\u51e6\u7406\u306e\u6d3b\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-187\">\n<p>\u3000\u3000\u25cf \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u9069\u5207\u306a\u4f7f\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-188\">\n<p>\u3000\u3000\u25cf \u975e\u540c\u671f\u51e6\u7406\u306e\u7c92\u5ea6\u8abf\u6574<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-189\">\n<p>\u30003. <strong>\u7d99\u7d9a\u7684\u306a\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-190\">\n<p>\u3000\u3000\u25cf \u30a2\u30e9\u30fc\u30c8\u306e\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-191\">\n<p>\u3000\u3000\u25cf \u30c8\u30ec\u30f3\u30c9\u5206\u6790<\/p>\n<\/div>\n\n\n<p>\u3000\u3000\u25cf \u4e88\u9632\u7684\u306a\u5bfe\u5fdc<\/p>\n\n\n<div id=\"sgb-css-id-192\">\n<p>\u3053\u308c\u3089\u306e\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u6280\u8853\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u306a\u975e\u540c\u671f\u51e6\u7406\u30b7\u30b9\u30c6\u30e0\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-193\">\n<h2 class=\"wp-block-heading\" id=\"i-34\">\uff15\uff0e\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u6d3b\u7528\u4f8b<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-194\">\n<h3 class=\"wp-block-heading\" id=\"i-35\">5.1 \u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306e\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-195\">\n<p>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3059\u308b\u5b9f\u88c5\u4f8b\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class LargeDataProcessingExample {\n    public class DataProcessor {\n        private final ExecutorService executor;\n        private final int batchSize;\n        private final ConcurrentLinkedQueue&lt;ProcessingResult&gt; results;\n\n        public DataProcessor(int threadCount, int batchSize) {\n            this.executor = Executors.newFixedThreadPool(threadCount);\n            this.batchSize = batchSize;\n            this.results = new ConcurrentLinkedQueue&lt;&gt;();\n        }\n\n        \/\/ \u5927\u898f\u6a21\u30c7\u30fc\u30bf\u306e\u975e\u540c\u671f\u30d0\u30c3\u30c1\u51e6\u7406\n        public CompletableFuture&lt;List&lt;ProcessingResult&gt;&gt; processLargeDataset(\n                List&lt;DataRecord&gt; records) {\n\n            \/\/ \u30c7\u30fc\u30bf\u3092\u9069\u5207\u306a\u30b5\u30a4\u30ba\u306e\u30d0\u30c3\u30c1\u306b\u5206\u5272\n            List&lt;List&lt;DataRecord&gt;&gt; batches = splitIntoBatches(records, batchSize);\n\n            \/\/ \u5404\u30d0\u30c3\u30c1\u3092\u975e\u540c\u671f\u3067\u51e6\u7406\n            List&lt;CompletableFuture&lt;ProcessingResult&gt;&gt; futures = batches.stream()\n                .map(batch -&gt; CompletableFuture.supplyAsync(\n                    () -&gt; processBatch(batch), executor))\n                .collect(Collectors.toList());\n\n            \/\/ \u5168\u30d0\u30c3\u30c1\u306e\u51e6\u7406\u5b8c\u4e86\u3092\u5f85\u6a5f\n            return CompletableFuture.allOf(\n                    futures.toArray(new CompletableFuture[0]))\n                .thenApply(v -&gt; futures.stream()\n                    .map(CompletableFuture::join)\n                    .collect(Collectors.toList()));\n        }\n\n        private ProcessingResult processBatch(List&lt;DataRecord&gt; batch) {\n            ProcessingResult result = new ProcessingResult();\n            try {\n                \/\/ \u30d0\u30c3\u30c1\u51e6\u7406\u306e\u30e1\u30a4\u30f3\u51e6\u7406\n                for (DataRecord record : batch) {\n                    result.addProcessedRecord(processRecord(record));\n                }\n            } catch (Exception e) {\n                result.setError(e);\n            }\n            return result;\n        }\n\n        \/\/ \u9032\u6357\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u6a5f\u80fd\n        public class ProcessingMonitor {\n            private final AtomicLong totalProcessed = new AtomicLong(0);\n            private final long totalRecords;\n\n            public ProcessingMonitor(long totalRecords) {\n                this.totalRecords = totalRecords;\n            }\n\n            public void updateProgress(int processedCount) {\n                long current = totalProcessed.addAndGet(processedCount);\n                double progress = (current * 100.0) \/ totalRecords;\n                System.out.printf(\"Progress: %.2f%% (%d\/%d records)%n\",\n                    progress, current, totalRecords);\n            }\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-196\">\n<h4 class=\"wp-block-heading\" id=\"i-36\">\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u306e\u30dd\u30a4\u30f3\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-197\">\n<p>\u30001. <strong>\u30d0\u30c3\u30c1\u51e6\u7406\u306e\u6700\u9069\u5316<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-198\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u30d0\u30c3\u30c1\u30b5\u30a4\u30ba\u306e\u6c7a\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-199\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u5236\u5fa1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-200\">\n<p>\u3000\u3000\u25cf \u9032\u6357\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-201\">\n<p>\u30002. <strong>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-202\">\n<p>\u3000\u3000\u25cf \u90e8\u5206\u7684\u306a\u5931\u6557\u306e\u8a31\u5bb9<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-203\">\n<p>\u3000\u3000\u25cf \u30ea\u30c8\u30e9\u30a4\u6a5f\u69cb\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-204\">\n<p>\u3000\u3000\u25cf \u30a8\u30e9\u30fc\u30ed\u30b0\u306e\u96c6\u7d04<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-205\">\n<h3 class=\"wp-block-heading\" id=\"i-37\">5.2 Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306eAsync Processing\u6d3b\u7528\u8853<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-206\">\n<p>Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3051\u308b\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@RestController\n@RequestMapping(\"\/api\")\npublic class AsyncWebServiceExample {\n    private final AsyncTaskExecutor taskExecutor;\n    private final TaskRepository taskRepository;\n\n    \/\/ \u975e\u540c\u671f\u51e6\u7406\u3092\u884c\u3046API\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\n    @PostMapping(\"\/tasks\")\n    public ResponseEntity&lt;TaskResponse&gt; submitTask(\n            @RequestBody TaskRequest request) {\n\n        \/\/ \u30bf\u30b9\u30af\u306e\u767b\u9332\n        Task task = taskRepository.save(\n            Task.builder()\n                .status(TaskStatus.PENDING)\n                .request(request)\n                .build());\n\n        \/\/ \u975e\u540c\u671f\u51e6\u7406\u306e\u958b\u59cb\n        CompletableFuture.runAsync(() -&gt; {\n            try {\n                processTask(task);\n            } catch (Exception e) {\n                handleTaskError(task, e);\n            }\n        }, taskExecutor);\n\n        \/\/ \u5373\u5ea7\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3059\n        return ResponseEntity.accepted()\n            .body(new TaskResponse(task.getId(), TaskStatus.PENDING));\n    }\n\n    \/\/ \u30bf\u30b9\u30af\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u78ba\u8a8dAPI\n    @GetMapping(\"\/tasks\/{taskId}\")\n    public ResponseEntity&lt;TaskStatus&gt; getTaskStatus(\n            @PathVariable Long taskId) {\n        return taskRepository.findById(taskId)\n            .map(task -&gt; ResponseEntity.ok(task.getStatus()))\n            .orElse(ResponseEntity.notFound().build());\n    }\n\n    \/\/ WebSocket\u306b\u3088\u308b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u901a\u77e5\n    @MessageMapping(\"\/tasks\/{taskId}\/progress\")\n    public class TaskProgressNotifier {\n        private final SimpMessagingTemplate messagingTemplate;\n\n        public void notifyProgress(Long taskId, int progress) {\n            String destination = \"\/topic\/tasks\/\" + taskId + \"\/progress\";\n            messagingTemplate.convertAndSend(destination, \n                new ProgressUpdate(taskId, progress));\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-207\">\n<h4 class=\"wp-block-heading\" id=\"i-38\">Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u5b9f\u88c5\u30dd\u30a4\u30f3\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-208\">\n<p>\u30001. <strong>API\u306e\u8a2d\u8a08<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-209\">\n<p>\u3000\u3000\u25cf \u975e\u540c\u671fAPI\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u8a2d\u8a08<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-210\">\n<p>\u3000\u3000\u25cf \u30b9\u30c6\u30fc\u30bf\u30b9\u78ba\u8a8d\u306e\u4ed5\u7d44\u307f<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-211\">\n<p>\u3000\u3000\u25cf WebSocket\u306b\u3088\u308b\u9032\u6357\u901a\u77e5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-212\">\n<p>\u30002. <strong>\u30a8\u30e9\u30fc\u51e6\u7406<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-213\">\n<p>\u3000\u3000\u25cf \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-214\">\n<p>\u3000\u3000\u25cf \u30ea\u30c8\u30e9\u30a4\u6226\u7565<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-215\">\n<p>\u3000\u3000\u25cf \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3078\u306e\u901a\u77e5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-216\">\n<h3 class=\"wp-block-heading\" id=\"i-39\">5.3 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3067\u306e\u975e\u540c\u671f\u901a\u4fe1\u30d1\u30bf\u30fc\u30f3<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-217\">\n<p>\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u304a\u3051\u308b\u975e\u540c\u671f\u901a\u4fe1\u306e\u5b9f\u88c5\u4f8b\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Service\npublic class AsyncMicroserviceCommunicationExample {\n    \/\/ \u30a4\u30d9\u30f3\u30c8\u767a\u884c\u5074\u306e\u5b9f\u88c5\n    public class OrderService {\n        private final KafkaTemplate&lt;String, OrderEvent&gt; kafkaTemplate;\n        private final OrderRepository orderRepository;\n\n        public CompletableFuture&lt;OrderResult&gt; processOrder(Order order) {\n            return CompletableFuture.supplyAsync(() -&gt; {\n                \/\/ \u6ce8\u6587\u306e\u51e6\u7406\n                OrderEvent event = createOrderEvent(order);\n\n                \/\/ \u30a4\u30d9\u30f3\u30c8\u306e\u767a\u884c\n                return kafkaTemplate.send(\"orders\", event)\n                    .thenApply(result -&gt; {\n                        orderRepository.save(order);\n                        return new OrderResult(\n                            order.getId(), OrderStatus.PROCESSING);\n                    })\n                    .exceptionally(ex -&gt; {\n                        \/\/ \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n                        order.setStatus(OrderStatus.ERROR);\n                        orderRepository.save(order);\n                        throw new OrderProcessingException(\n                            \"Failed to process order\", ex);\n                    });\n            });\n        }\n    }\n\n    \/\/ \u30a4\u30d9\u30f3\u30c8\u53d7\u4fe1\u5074\u306e\u5b9f\u88c5\n    @Service\n    public class InventoryService {\n        @KafkaListener(topics = \"orders\")\n        public void handleOrderEvent(OrderEvent event) {\n            try {\n                \/\/ \u5728\u5eab\u306e\u78ba\u8a8d\u3068\u66f4\u65b0\n                updateInventory(event);\n\n                \/\/ \u7d50\u679c\u30a4\u30d9\u30f3\u30c8\u306e\u767a\u884c\n                publishInventoryUpdatedEvent(event);\n            } catch (Exception e) {\n                \/\/ \u88dc\u511f\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\n                compensateFailedInventoryUpdate(event);\n            }\n        }\n    }\n\n    \/\/ \u30b5\u30fc\u30ad\u30c3\u30c8\u30d6\u30ec\u30fc\u30ab\u30fc\u30d1\u30bf\u30fc\u30f3\u306e\u5b9f\u88c5\n    @Service\n    public class ResilientServiceCaller {\n        private final CircuitBreaker circuitBreaker;\n\n        public CompletableFuture&lt;ServiceResponse&gt; callService(\n                ServiceRequest request) {\n            return circuitBreaker.executeAsync(() -&gt; \n                actualServiceCall(request))\n                .thenApply(this::processResponse)\n                .exceptionally(this::handleFailure);\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-218\">\n<h4 class=\"wp-block-heading\" id=\"i-40\">\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-219\">\n<p>\u30001. <strong>\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u8a2d\u8a08<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-220\">\n<p>\u3000\u3000\u25cf \u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-221\">\n<p>\u3000\u3000\u25cf \u975e\u540c\u671f\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u30d1\u30bf\u30fc\u30f3<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-222\">\n<p>\u3000\u3000\u25cf \u51aa\u7b49\u6027\u306e\u78ba\u4fdd<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-223\">\n<p>\u30002. <strong>\u5206\u6563\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-224\">\n<p>\u3000\u3000\u25cf Saga\u30d1\u30bf\u30fc\u30f3\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-225\">\n<p>\u3000\u3000\u25cf \u88dc\u511f\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-226\">\n<p>\u3000\u3000\u25cf \u30c7\u30fc\u30bf\u306e\u6574\u5408\u6027\u78ba\u4fdd<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-227\">\n<p>\u30003. <strong>\u30ec\u30b8\u30ea\u30a8\u30f3\u30b9<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-228\">\n<p>\u3000\u3000\u25cf \u30b5\u30fc\u30ad\u30c3\u30c8\u30d6\u30ec\u30fc\u30ab\u30fc<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-229\">\n<p>\u3000\u3000\u25cf \u30ea\u30c8\u30e9\u30a4\u30dd\u30ea\u30b7\u30fc<\/p>\n<\/div>\n\n\n<p>\u3000\u3000\u25cf \u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u51e6\u7406<\/p>\n\n\n<div id=\"sgb-css-id-230\">\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u306f\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u6d3b\u7528\u3067\u304d\u308b\u5177\u4f53\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u3068\u30c6\u30af\u30cb\u30c3\u30af\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8981\u4ef6\u3084\u5236\u7d04\u306b\u5fdc\u3058\u3066\u3001\u9069\u5207\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u9078\u629e\u3057\u3001\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-231\">\n<h2 class=\"wp-block-heading\" id=\"i-41\">\u307e\u3068\u3081\u3068\u4eca\u5f8c\u306e\u5b66\u7fd2\u65b9\u91dd<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-232\">\n<h4 class=\"wp-block-heading\" id=\"i-42\">\u672c\u8a18\u4e8b\u306e\u307e\u3068\u3081<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-233\">\n<p>\u3000<strong>1. \u975e\u540c\u671f\u51e6\u7406\u306e\u57fa\u790e<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-234\">\n<p>\u3000\u3000\u25cf \u540c\u671f\u30fb\u975e\u540c\u671f\u306e\u9055\u3044\u3092\u7406\u89e3<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-235\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306e\u628a\u63e1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-236\">\n<p>\u3000\u3000\u25cf \u57fa\u672c\u7684\u306a\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u306e\u7fd2\u5f97<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-237\">\n<p>\u3000<strong>2. \u5b9f\u88c5\u30c6\u30af\u30cb\u30c3\u30af<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-238\">\n<p>\u3000\u3000\u25cf 7\u3064\u306e\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u306e\u4f7f\u3044\u5206\u3051<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-239\">\n<p>\u3000\u3000\u25cf \u52b9\u7387\u7684\u306a\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u8a2d\u8a08<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-240\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-241\">\n<p>\u3000<strong>3. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-242\">\n<p>\u3000\u3000\u25cf \u30b9\u30ec\u30c3\u30c9\u6570\u306e\u6700\u9069\u5316<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-243\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u5236\u5fa1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-244\">\n<p>\u3000\u3000\u25cf \u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306e\u7279\u5b9a\u3068\u6539\u5584<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-245\">\n<p>\u3000<strong>4. \u5b9f\u8df5\u7684\u306a\u6d3b\u7528<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-246\">\n<p>\u3000\u3000\u25cf \u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-247\">\n<p>\u3000\u3000\u25cf Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u6d3b\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-248\">\n<p>\u3000\u3000\u25cf \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3067\u306e\u5fdc\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-249\">\n<h4 class=\"wp-block-heading\" id=\"i-43\">\u4eca\u5f8c\u306e\u5b66\u7fd2\u306e\u305f\u3081\u306b<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-250\">\n<p>\u3000<strong>1. \u6df1\u304f\u5b66\u3076\u3079\u304d\u9818\u57df<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-251\">\n<p>\u3000\u3000\u25cf \u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-252\">\n<p>\u3000\u3000\u25cf \u5206\u6563\u30b7\u30b9\u30c6\u30e0\u306e\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-253\">\n<p>\u3000\u3000\u25cf \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u624b\u6cd5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-254\">\n<p>\u3000<strong>2. \u63a8\u5968\u3055\u308c\u308b\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-255\">\n<p>\u3000\u3000\u25cf Java Concurrency in Practice\uff08\u66f8\u7c4d\uff09<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-256\">\n<p>\u3000\u3000\u25cf Spring Framework\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-257\">\n<p>\u3000\u3000\u25cf Project Reactor documentation<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-258\">\n<p>\u3000<strong>3. \u5b9f\u8df5\u7684\u306a\u30b9\u30c6\u30c3\u30d7<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-259\">\n<p>\u3000\u3000\u25cf \u5c0f\u898f\u6a21\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u8a66\u9a13\u7684\u5c0e\u5165<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-260\">\n<p>\u3000\u3000\u25cf \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\u306e\u7fd2\u6163\u5316<\/p>\n<\/div>\n\n\n<p>\u3000\u3000\u25cf \u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u3067\u306e\u77e5\u898b\u5171\u6709<\/p>\n\n\n<div id=\"sgb-css-id-261\">\n<p>\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u306f\u3001\u7d99\u7d9a\u7684\u306a\u5b66\u7fd2\u3068\u5b9f\u8df5\u304c\u91cd\u8981\u3067\u3059\u3002\u672c\u8a18\u4e8b\u3067\u7d39\u4ecb\u3057\u305f\u5185\u5bb9\u3092\u57fa\u790e\u3068\u3057\u3066\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u7d4c\u9a13\u3092\u7a4d\u307f\u91cd\u306d\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u6df1\u3044\u7406\u89e3\u3068\u5b9f\u88c5\u30b9\u30ad\u30eb\u3092\u8eab\u306b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":2929,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,66,71],"tags":[],"class_list":{"0":"post-718","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-java","8":"category-java-syntax","9":"category-java-async"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=718"}],"version-history":[{"count":18,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/718\/revisions"}],"predecessor-version":[{"id":2964,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/718\/revisions\/2964"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/media\/2929"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}