程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java完成多線程的兩種方法繼續Thread類和完成Runnable接口的辦法

java完成多線程的兩種方法繼續Thread類和完成Runnable接口的辦法

編輯:關於JAVA

java完成多線程的兩種方法繼續Thread類和完成Runnable接口的辦法。本站提示廣大學習愛好者:(java完成多線程的兩種方法繼續Thread類和完成Runnable接口的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是java完成多線程的兩種方法繼續Thread類和完成Runnable接口的辦法正文


完成方法和繼續方法有甚麼差別呢?

*差別:

*繼續Thread:線程代碼寄存在Thread子類run辦法中

*完成Runnable:線程代碼寄存在接口的子類的run辦法中

*完成方法的利益:防止了單繼續的局限性

*在界說線程時,建議應用完成方法,固然假如一個類沒有繼續父類,那末也能夠經由過程繼續Thread類來完成多線程

*留意:Runnable接口沒有拋出異常,那末完成它的類只能是try-catch不克不及throws

*Java對多線程的平安成績供給了專業的處理方法就是同步代碼塊synchronized(對象){須要同步的代碼}

*同步的條件:

*1.有2個及以上的線程

*2.多個線程應用用一個鎖(對象)

*同步的利益:處理了多線程的平安成績

*同步的弊病:多個線程須要斷定鎖,較為消費資本

package 多線程;

class Ticket implements Runnable
{
//	private static int tick = 100;
	private int tick=100;
	Object obj = new Object();//創建一個對象或許本身從新寫一個類來創立一個對象上面同步症結字須要用到
	@Override
	public void run() 
	{
		while(true)
		{
			synchronized(obj)
//			synchronized(this)
			{
			if(tick>0){
				try {Thread.sleep(10);} catch (Exception e) {	}
				System.out.println(Thread.currentThread().getName()+"...銷售:"+(tick--)+"號票");
//				tick--;
			}else {
				break;
			}
			}
		}
	}
	
}
public class Test 
{
	public static void main(String[] args) 
	{
		Ticket t = new Ticket();//創立一個完成了Runnable接口的類
		
		//創立4個多線程對象並傳遞下面接口對象給其結構辦法
		Thread t1 = new Thread(t);//創立了一個線程
		Thread t2 = new Thread(t);//創立了一個線程
		Thread t3 = new Thread(t);//創立了一個線程
		Thread t4 = new Thread(t);//創立了一個線程
		
		//開啟線程
		t1.start();
		t2.start();
		t3.start();
		t4.start();
	}
}

以上就是小編為年夜家帶來的java完成多線程的兩種方法繼續Thread類和完成Runnable接口的辦法的全體內容了,願望對年夜家有所贊助,多多支撐~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved