{"id":19392,"date":"2024-03-15T18:47:58","date_gmt":"2024-03-15T18:47:58","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/"},"modified":"2024-03-21T15:35:32","modified_gmt":"2024-03-21T15:35:32","slug":"how-to-control-the-start-and-stop-of-multiple-threads-in-java","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/","title":{"rendered":"How to control the start and stop of multiple threads in Java?"},"content":{"rendered":"<p>In Java, there are several common ways to control the start and stop of multiple threads.<\/p>\n<ol>\n<li>Using the Thread class: You can start a thread by calling the start() method of the Thread class and stop a thread by calling the interrupt() method of the thread object.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-type\">Thread<\/span> <span class=\"hljs-variable\">thread<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Thread<\/span>(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Runnable<\/span>() {\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">run<\/span><span class=\"hljs-params\">()<\/span> {\r\n        <span class=\"hljs-comment\">\/\/ \u7ebf\u7a0b\u6267\u884c\u7684\u4ee3\u7801<\/span>\r\n    }\r\n});\r\nthread.start(); <span class=\"hljs-comment\">\/\/ \u542f\u52a8\u7ebf\u7a0b<\/span>\r\nthread.interrupt(); <span class=\"hljs-comment\">\/\/ \u505c\u6b62\u7ebf\u7a0b<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>By using the Runnable interface, you can start a thread by creating an object of a class that implements the Runnable interface and then passing it to the constructor of the Thread class. The method to stop the thread is the same as mentioned above.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-type\">Runnable<\/span> <span class=\"hljs-variable\">runnable<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Runnable<\/span>() {\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">run<\/span><span class=\"hljs-params\">()<\/span> {\r\n        <span class=\"hljs-comment\">\/\/ \u7ebf\u7a0b\u6267\u884c\u7684\u4ee3\u7801<\/span>\r\n    }\r\n};\r\n\r\n<span class=\"hljs-type\">Thread<\/span> <span class=\"hljs-variable\">thread<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Thread<\/span>(runnable);\r\nthread.start(); <span class=\"hljs-comment\">\/\/ \u542f\u52a8\u7ebf\u7a0b<\/span>\r\nthread.interrupt(); <span class=\"hljs-comment\">\/\/ \u505c\u6b62\u7ebf\u7a0b<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>Utilize shared variables: Shared variables can be used to control the start and stop of threads. By setting the value of a shared variable, you can control the execution logic of threads, allowing them to exit a loop under certain conditions and consequently stop the thread.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">volatile<\/span> <span class=\"hljs-type\">boolean<\/span> <span class=\"hljs-variable\">isRunning<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-literal\">true<\/span>; <span class=\"hljs-comment\">\/\/ \u5171\u4eab\u53d8\u91cf<\/span>\r\n\r\n<span class=\"hljs-type\">Thread<\/span> <span class=\"hljs-variable\">thread<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Thread<\/span>(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Runnable<\/span>() {\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">run<\/span><span class=\"hljs-params\">()<\/span> {\r\n        <span class=\"hljs-keyword\">while<\/span> (isRunning) {\r\n            <span class=\"hljs-comment\">\/\/ \u7ebf\u7a0b\u6267\u884c\u7684\u4ee3\u7801<\/span>\r\n        }\r\n    }\r\n});\r\n\r\nthread.start(); <span class=\"hljs-comment\">\/\/ \u542f\u52a8\u7ebf\u7a0b<\/span>\r\nisRunning = <span class=\"hljs-literal\">false<\/span>; <span class=\"hljs-comment\">\/\/ \u505c\u6b62\u7ebf\u7a0b<\/span>\r\n<\/code><\/pre>\n<p>It is important to note that the methods mentioned above control the start and stop of threads through cooperation, meaning the thread itself decides when to exit. Additionally, the method of stopping a thread is not by forcefully terminating it, but rather by setting a flag or sending an interrupt signal to request the thread to stop. The thread checks these conditions at appropriate times and voluntarily exits the loop, thus halting the execution of the thread.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Java, there are several common ways to control the start and stop of multiple threads. Using the Thread class: You can start a thread by calling the start() method of the Thread class and stop a thread by calling the interrupt() method of the thread object. Thread thread = new Thread(new Runnable() { @Override [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-19392","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to control the start and stop of multiple threads in Java? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to control the start and stop of multiple threads in Java?\" \/>\n<meta property=\"og:description\" content=\"In Java, there are several common ways to control the start and stop of multiple threads. Using the Thread class: You can start a thread by calling the start() method of the Thread class and stop a thread by calling the interrupt() method of the thread object. Thread thread = new Thread(new Runnable() { @Override [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T18:47:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T15:35:32+00:00\" \/>\n<meta name=\"author\" content=\"Sophia Anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sophia Anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/\"},\"author\":{\"name\":\"Sophia Anderson\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30\"},\"headline\":\"How to control the start and stop of multiple threads in Java?\",\"datePublished\":\"2024-03-15T18:47:58+00:00\",\"dateModified\":\"2024-03-21T15:35:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/\"},\"wordCount\":227,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/\",\"name\":\"How to control the start and stop of multiple threads in Java? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T18:47:58+00:00\",\"dateModified\":\"2024-03-21T15:35:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to control the start and stop of multiple threads in Java?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30\",\"name\":\"Sophia Anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g\",\"caption\":\"Sophia Anderson\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/sophiaanderson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to control the start and stop of multiple threads in Java? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/","og_locale":"en_US","og_type":"article","og_title":"How to control the start and stop of multiple threads in Java?","og_description":"In Java, there are several common ways to control the start and stop of multiple threads. Using the Thread class: You can start a thread by calling the start() method of the Thread class and stop a thread by calling the interrupt() method of the thread object. Thread thread = new Thread(new Runnable() { @Override [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T18:47:58+00:00","article_modified_time":"2024-03-21T15:35:32+00:00","author":"Sophia Anderson","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Sophia Anderson","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/"},"author":{"name":"Sophia Anderson","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30"},"headline":"How to control the start and stop of multiple threads in Java?","datePublished":"2024-03-15T18:47:58+00:00","dateModified":"2024-03-21T15:35:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/"},"wordCount":227,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/","name":"How to control the start and stop of multiple threads in Java? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T18:47:58+00:00","dateModified":"2024-03-21T15:35:32+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-control-the-start-and-stop-of-multiple-threads-in-java\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to control the start and stop of multiple threads in Java?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30","name":"Sophia Anderson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g","caption":"Sophia Anderson"},"url":"https:\/\/www.silicloud.com\/blog\/author\/sophiaanderson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19392","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=19392"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19392\/revisions"}],"predecessor-version":[{"id":53133,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19392\/revisions\/53133"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=19392"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=19392"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=19392"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}