通過實現Runnable介面創建線程 獲取Thread對象,new出來,構造函數參數:Runnable對象 Runnable是一個介面,定義一個類MyRunnable實現Runnable介面,實現run()方法, 重寫run()方法,編寫業務邏輯 調用Thread.currentThread()方法 ...
通過實現Runnable介面創建線程
獲取Thread對象,new出來,構造函數參數:Runnable對象
Runnable是一個介面,定義一個類MyRunnable實現Runnable介面,實現run()方法,
重寫run()方法,編寫業務邏輯
調用Thread.currentThread()方法獲取當前Thread對象
調用Thread對象的start()方法
package com.tsh.test; public class Home { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); //開啟兩個線程處理同一個目標對象的資源 new Thread(myRunnable).start(); new Thread(myRunnable).start(); } } class MyRunnable implements Runnable { private int nums=10; @Override public void run() { while(nums-- > 0){ System.out.println(Thread.currentThread().getName()+"==="+nums); } } }
結果:
Thread-0===8
Thread-1===8
Thread-1===6
Thread-0===7
Thread-0===4
Thread-0===3
Thread-0===2
Thread-1===5
Thread-1===0
Thread-0===1
優點:
線程類只是實現了Runnable介面,還可以繼承別的類
可以多個線程共用同一個目標對象
缺點:
邏輯稍微複雜
獲取當前線程對象只能使用Thread.currentThread()方法
繼承Thread類
定義一個類MyThread繼承Thread,重寫run()方法
在run()方法中編寫業務邏輯,使用this就是當前Thread對象
獲取Thread對象,通過new MyThread()
調用Thread對象的start()方法
package com.tsh.test; public class Home { public static void main(String[] args) { //開啟兩個線程 new MyThread().start(); new MyThread().start(); } } class MyThread extends Thread{ private int nums=10; @Override public void run() { while(nums-- > 0){ System.out.println(this.getName()+"==="+nums); } } }
結果:
Thread-0===9
Thread-1===9
Thread-1===8
Thread-0===8
Thread-1===7
Thread-1===6
Thread-0===7
Thread-1===5
Thread-1===4
Thread-0===6
Thread-0===5
Thread-0===4
Thread-0===3
Thread-1===3
Thread-1===2
Thread-0===2
Thread-0===1
Thread-1===1
Thread-0===0
Thread-1===0
優點:
編寫簡單,this代表當前Thread對象
缺點:
線程類不能再繼承其他父類
PHP安裝pthreads擴展教程
http://my.oschina.net/yanhx/blog/198114
註意擴展所對應的php版本號,windows系統擴展下載地址
http://windows.php.net/downloads/pecl/releases/pthreads/
手冊地址
http://php.net/manual/zh/book.pthreads.php
<?php /** * PHP多線程 */ class MyThread extends Thread{ public function run(){ echo $this->getThreadId()."線程開啟<br/>"; } } $myThread=new MyThread(); $myThread->start(); $myThread=new MyThread(); $myThread->start(); $myThread=new MyThread(); $myThread->start(); ?>
結果:
13104線程開啟
6240線程開啟
8832線程開啟