需求:我們要實作多執行緒的程式
(推薦教學:java課程)
#如何實作:
由於執行緒是依賴行程而存在的,所以我們應該先建立一個行程出來
而而行程是由系統建立的,所以我們應該去呼叫系統功能來建立一個行程
但是,Java是無法直接呼叫系統功能的,所以,我們沒有辦法直接實作多執行緒程式
但是呢,Java可以直接呼叫C/C 寫好的程式來實作多執行緒程式
由於C/C 去呼叫系統功能建立進程,然後Java去呼叫這樣的東西
然後提供一些類別供我們使用。我們就可以實作多執行緒
那麼Java提供的類別是什麼?
Thread
透過查看API,我們知道有兩種方法實作多執行緒
方式一:繼承Thread類別
步驟:
A:自訂類別MyThread繼承Thread類別
B:MyThread類別裡面重寫run();
為什麼是run()方法呢?
不是類別種的所有程式碼都需要被執行緒執行
而這個時候,為了區分那些程式碼能夠被多執行緒執行,Java提供了Thread類別中的run()方法
用來包含哪些被執行緒執行的程式碼
C:建立物件
D:啟動執行緒
範例:
package cn.itcast_01; public class 如何实现多线程及其多线程方式1的思路 { public static void main(String[] args) { // 创建线程对象 MyThread my = new MyThread(); //启动线程 my.run(); my.run(); //调用run();方法为什么是单线程呢? //因为run();方法的直接调用其实就相当于普通方法调用,所有你看到的是单线程的效果 //想要看到多线程的效果,就必须说另一个方法:start() //面试题run()和start()的区别 //run():仅仅是封装被线程执行的代码,直接调用依旧是普通方法 //start():首先启动了线程,然后再由JVM去调用该线程的run()方法 MyThread my = new MyThread(); my.start(); my.start();//IllegalThreadStateException:非法的线程状态异常 //为什么呢? //因为这是相当于my线程别调用了两次。而不是两个线程的启动 //创建两个线程 MyThread my1 = new MyThread(); MyThread my2 = new MyThread(); my1.start(); my2.start(); } }
相關推薦:java入門
以上是java怎麼實作多執行緒的詳細內容。更多資訊請關注PHP中文網其他相關文章!