1. \u56de\u627fThread\u7c7b\uff1a\u521b\u5efa\u4e00\u4e2a\u7c7b\u56de\u627fThread\u7c7b\uff0c\u5e76\u91cd\u5199run()\u65b9\u6cd5\uff0c\u7136\u540e\u521b\u5efa\u8be5\u7c7b\u7684\u5b9e\u4f8b\u5e76\u8c03\u7528start()\u65b9\u6cd5\u6765\u542f\u52a8\u7ebf\u7a0b\u3002\n\njava\npublic\u0020class\u0020MyThread\u0020extends\u0020Thread\u0020{\n\u0020\u0020@Override\n\u0020\u0020public\u0020void\u0020run()\u0020{\n\u0020\u0020\u0020\u0020//\u0020\u7ebf\u7a0b\u6267\u884c\u7684\u4ee3\u7801\u903c\u8f91\n\u0020\u0020}\n}\n\npublic\u0020class\u0020Main\u0020{\n\u0020\u0020public\u0020static\u0020void\u0020main(String[]\u0020args)\u0020{\n\u0020\u0020\u0020\u0020MyThread\u0020thread\u0020=\u0020new\u0020MyThread();\n\u0020\u0020\u0020\u0020thread.start();\n\u0020\u0020}\n}\n\n\n2. \u5b9e\u73b0Runnable\u63a5\u53e3\uff1a\u521b\u5efa\u4e00\u4e2a\u7c7b\u5b9e\u73b0Runnable\u63a5\u53e3\uff0c\u5e76\u5b9e\u73b0\u5176run()\u65b9\u6cd5\uff0c\u7136\u540e\u521b\u5efaThread\u7684\u5b9e\u4f8b\uff0c\u5c06\u5b9e\u73b0\u4e86Runnable\u63a5\u53e3\u7684\u7c7b\u7684\u5b9e\u4f8b\u4f5c\u4e3a\u53c2\u6570\u4f20\u9001\u7ed9Thread\u7684\u6784\u9020\u51fd\u6570\uff0c\u6700\u540e\u8c03\u7528start()\u65b9\u6cd5\u6765\u542f\u52a8\u7ebf\u7a0b\u3002\n\njava\npublic\u0020class\u0020MyRunnable\u0020implements\u0020Runnable\u0020{\n\u0020\u0020@Override\n\u0020\u0020public\u0020void\u0020run()\u0020{\n\u0020\u0020\u0020\u0020//\u0020\u7ebf\u7a0b\u6267\u884c\u7684\u4ee3\u7801\u903c\u8f91\n\u0020\u0020}\n}\n\npublic\u0020class\u0020Main\u0020{\n\u0020\u0020public\u0020static\u0020void\u0020main(String[]\u0020args)\u0020{\n\u0020\u0020\u0020\u0020MyRunnable\u0020runnable\u0020=\u0020new\u0020MyRunnable();\n\u0020\u0020\u0020\u0020Thread\u0020thread\u0020=\u0020new\u0020Thread(runnable);\n\u0020\u0020\u0020\u0020thread.start();\n\u0020\u0020}\n}\n\n\n3. \u4f7f\u7528Callable\u548cFuture\uff1a\u521b\u5efa\u4e00\u4e2a\u7c7b\u5b9e\u73b0Callable\u63a5\u53e3\uff0c\u5e76\u5b9e\u73b0\u5176call()\u65b9\u6cd5\uff0c\u7136\u540e\u4f7f\u7528ExecutorService\u7684submit()\u65b9\u6cd5\u5c06\u5b9e\u73b0\u4e86Callable\u63a5\u53e3\u7684\u7c7b\u7684\u5b9e\u4f8b\u63d0\u4ea4\u7ed9\u7ebf\u7a0b\u6c60\u6267\u884c\u3002\n\njava\nimport\u0020java.util.concurrent.Callable;\nimport\u0020java.util.concurrent.ExecutorService;\nimport\u0020java.util.concurrent.Executors;\nimport\u0020java.util.concurrent.Future;\n\npublic\u0020class\u0020MyCallable\u0020implements\u0020Callable<String>\u0020{\n\u0020\u0020@Override\n\u0020\u0020public\u0020String\u0020call()\u0020throws\u0020Exception\u0020{\n\u0020\u0020\u0020\u0020//\u0020\u7ebf\u7a0b\u6267\u884c\u7684\u4ee3\u7801\u903c\u8f91\n\u0020\u0020\u0020\u0020return\u0020"Hello,\u0020World!";\n\u0020\u0020}\n}\n\npublic\u0020class\u0020Main\u0020{\n\u0020\u0020public\u0020static\u0020void\u0020main(String[]\u0020args)\u0020{\n\u0020\u0020\u0020\u0020ExecutorService\u0020executorService\u0020=\u0020Executors.newFixedThreadPool(1);\n\u0020\u0020\u0020\u0020Future<String>\u0020future\u0020=\u0020executorService.submit(new\u0020MyCallable());\n\u0020\u0020\u0020\u0020try\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020String\u0020result\u0020=\u0020future.get();\n\u0020\u0020\u0020\u0020\u0020\u0020System.out.println(result);\n\u0020\u0020\u0020\u0020} catch\u0020(Exception\u0020e)\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020e.printStackTrace();\n\u0020\u0020\u0020\u0020}\n\u0020\u0020\u0020\u0020executorService.shutdown();\n\u0020\u0020}\n}\n\n\n4. \u4f7f\u7528\u7ebf\u7a0b\u6c60\uff1a\u901a\u8fc7Executors\u7c7b\u7684\u9759\u6001\u65b9\u6cd5\u521b\u5efa\u4e00\u4e2a\u7ebf\u7a0b\u6c60\uff0c\u7136\u540e\u5c06\u5b9e\u73b0\u4e86Runnable\u63a5\u53e3\u6216Callable\u63a5\u53e3\u7684\u5b9e\u4f8b\u901a\u8fc7submit()\u65b9\u6cd5\u63d0\u4ea4\u7ed9\u7ebf\u7a0b\u6c60\u6267\u884c\u3002\n\njava\nimport\u0020java.util.concurrent.ExecutorService;\nimport\u0020java.util.concurrent.Executors;\n\npublic\u0020class\u0020MyRunnable\u0020implements\u0020Runnable\u0020{\n\u0020\u0020@Override\n\u0020\u0020public\u0020void\u0020run()\u0020{\n\u0020\u0020\u0020\u0020//\u0020\u7ebf\u7a0b\u6267\u884c\u7684\u4ee3\u7801\u903c\u8f91\n\u0020\u0020}\n}\n\npublic\u0020class\u0020Main\u0020{\n\u0020\u0020public\u0020static\u0020void\u0020main(String[]\u0020args)\u0020{\n\u0020\u0020\u0020\u0020ExecutorService\u0020executorService\u0020=\u0020Executors.newFixedThreadPool(1);\n\u0020\u0020\u0020\u0020executorService.submit(new\u0020MyRunnable());\n\u0020\u0020\u0020\u0020executorService.shutdown();\n\u0020\u0020}\n}\n\n
Java 多线程启动的四种方式 - 详细指南

原文地址: https://www.cveoy.top/t/topic/pAre 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录