當前位置:編程學習大全網 - 編程語言 - java多線程編程綜述

java多線程編程綜述

//堆棧類

包知道1;

導入Java . util . linked list;

公共類堆棧

{

LinkedList & ltObject & gts=new LinkedList<。Object & gt();

公共void推送(對象o)

{

已同步{

s . push(o);

}

}

公共對象pop()

{

如果(!s.isEmpty())

已同步{

返回s . pop();

}

其他

返回null

}

public boolean isEmpty()

{

返回s . isempty();

}

}

//生產類

公共類生成器實現Runnable

{

堆棧s;

公共產品(堆棧)

{

this.s = s

}

公共無效運行()

{

for(int I = 0;我& lt200;i++)

{

int tem =(int)(math . random()* 1000);

s . push(tem);

系統。out.println(線程。currentthread()。getname ()+"棧上的數據是:"+tem);

嘗試

{

thread . sleep(600);

} catch(中斷異常e)

{

// TODO自動生成的catch塊

e . printstacktrace();

}

}

}

}

//消費者類別

公共類Consume實現Runnable

{

堆棧s;

公共消費者(堆棧)

{

super();

this.s = s

}

公共無效運行()

{

for(int I = 0;我& lt200;i++)

{

如果(!s.isEmpty())

系統。out . println(thread . current thread()。getname ()+"提取的數據是:"+s . pop());

嘗試

{

thread . sleep(500);

} catch(中斷異常e)

{

// TODO自動生成的catch塊

e . printstacktrace();

}

}

}

}

//測試類

公共類TestProCon

{

公共靜態void main(String[] args)

{

Stack s = new Stack();

Thread Producter 1 =新線程(新的產品);

線程生成器2 =新線程(新生成器);

producter 1 . setname(" producter 1 ");

producter 2 . setname(" producter 2 ");

線程消耗1 =新線程(新消耗);

線程消耗2 =新線程(新消耗);

線程消耗3 =新線程(新消耗);

consume 1 . setname(" consume 1 ");

consume 2 . setname(" consume 2 ");

consume 3 . setname(" consume 3 ");

producter 1 . start();

producter 2 . start();

consume 1 . start();

consume 2 . start();

consume 3 . start();

}

}

  • 上一篇:什麽是逆合成孔徑雷達?
  • 下一篇:電腦主板各部件詳細圖解
  • copyright 2024編程學習大全網