国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

實現Runnable接口和繼承Thread類區別

2019-11-11 03:30:09
字體:
來源:轉載
供稿:網友

如果一個類繼承Thread,則不適合資源共享。但是如果實現了Runable接口的話,則很容易的實現資源共享。

實現Runnable接口比繼承Thread類所具有的優勢:

1):適合多個相同的程序代碼的線程去處理同一個資源

2):可以避免java中的單繼承的限制

3):增加程序的健壯性,代碼可以被多個線程共享,代碼和數據獨立

直接看代碼:

1、繼承Thread的demo

package com.multithread.learning;/** *多線程學習,繼承Thread,資源不能共享 *@author */class Thread1 extends Thread{	PRivate int count=5;	private String name;    public Thread1(String name) {       this.name=name;    }	public void run() {        for (int i = 0; i < 5; i++) {            System.out.println(name + "運行  count= " + count--);            try {                sleep((int) Math.random() * 10);            } catch (InterruptedException e) {                e.printStackTrace();            }        }       	}}public class Main {	public static void main(String[] args) {		Thread1 mTh1=new Thread1("A");		Thread1 mTh2=new Thread1("B");		mTh1.start();		mTh2.start();	}}2、實現Runnable的demo
/** *多線程學習 實現runnable,資源能共享 *@author  */package com.multithread.runnable;class Thread2 implements Runnable{    private int count=15;	@Override	public void run() {		  for (int i = 0; i < 5; i++) {			  System.out.println(Thread.currentThread().getName() + "運行  count= " + count--);	            try {	            	Thread.sleep((int) Math.random() * 10);	            } catch (InterruptedException e) {	                e.printStackTrace();	            }	        }	}	}public class Main {	public static void main(String[] args) {		Thread2 mTh = new Thread2();	        new Thread(mTh, "C").start();//同一個mTh,但是在Thread中就不可以,如果用同一個實例化對象mt,就會出現異常   	        new Thread(mTh, "D").start();	        new Thread(mTh, "E").start();	}}
//這里要注意每個線程都是用同一個實例化對象,如果不是同一個,效果就和上面的一樣了!

提醒一下大家:main方法其實也是一個線程。在java中所有的線程都是同時啟動的,至于什么時候,哪個先執行,完全看誰先得到CPU的資源。

在java中,每次程序運行至少啟動2個線程。一個是main線程,一個是垃圾收集線程。因為每當使用java命令執行一個類的時候,實際上都會啟動一個jvm,每一個jvm實際上就是在操作系統中啟動了一個進程。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赫章县| 托里县| 西华县| 梅州市| 抚顺市| 玉山县| 阳信县| 洪江市| 巫溪县| 石阡县| 开鲁县| 海盐县| 潮安县| 新龙县| 弥渡县| 乡城县| 福清市| 花莲县| 澄城县| 浠水县| 外汇| 横峰县| 遂溪县| 胶南市| 绿春县| 屏东县| 额敏县| 台东县| 长寿区| 宁南县| 商城县| 长垣县| 桂阳县| 岳阳市| 合肥市| 融水| 蛟河市| 康乐县| 宁海县| 弋阳县| 铁岭市|