导航:首页 > 编程语言 > Java多线程Queue

Java多线程Queue

发布时间:2024-11-26 14:20:35

java多线程共同操作同一个队列,怎么实现

以下是两个线程:

import java.util.*;

public class Thread_List_Operation {
//假设有这么一个队列
static List list = new LinkedList();

public static void main(String[] args) {
Thread t;
t = new Thread(new T1());
t.start();
t = new Thread(new T2());
t.start();

}

}

//线程T1,用来给list添加新元素
class T1 implements Runnable{

void getElemt(Object o){
Thread_List_Operation.list.add(o);
System.out.println(Thread.currentThread().getName() + "为队列添加了一个元素");
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
getElemt(new Integer(1));
}

}

}

//线程T2,用来给list添加新元素
class T2 implements Runnable{

void getElemt(Object o){
Thread_List_Operation.list.add(o);
System.out.println(Thread.currentThread().getName() + "为队列添加了一个元素");
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
getElemt(new Integer(1));
}

}

}

//结果(乱序)
Thread-0为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-0为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-1为队列添加了一个元素
Thread-0为队列添加了一个元素
Thread-0为队列添加了一个元素
Thread-0为队列添加了一个元素
Thread-0为队列添加了一个元素
Thread-0为队列添加了一个元素
Thread-0为队列添加了一个元素
Thread-0为队列添加了一个元素
Thread-0为队列添加了一个元素

⑵ Java涓鍏充簬濡备綍瀹炵幇澶氱嚎绋嬫秷鎭阒熷垪镄勫疄渚(java澶氱嚎绋嬮氢俊)

java涓镄勬秷鎭阒熷垪

娑堟伅阒熷垪鏄绾跨▼闂撮氲镄勬坠娈碉细

importjava.util.*

publicclassMsgQueue{

privateVectorqueue=null;

publicMsgQueue(){

queue=newVector();

}

publicvoidsend(Objecto)

{

queue.addElement(o);

}

publicObjectrecv()

{

if(queue.size()==0)

returnnull;

Objecto=queue.();

queue.(0);//orqueue[0]=nullcanalsowork

returno;

}

}

锲犱负java涓鏄痩ockedbyobject镄勬墍浠ユ坊锷犲氨鍙浠ョ敤浜庣嚎绋嫔悓姝ラ挛瀹氩硅薄

鍙浠ヤ綔涓哄氱嚎绋嫔勭悊澶氢换锷$殑瀛樻斁task镄勯槦鍒椼备粬镄刢lient鍖呮嫭灏佽呭ソ镄则ask绫讳互鍙妕hread绫

Java镄勫氱嚎绋-绾跨▼闂寸殑阃氢俊2009-08-2521:58

1.绾跨▼镄勫嚑绉岖姸镐

绾跨▼链夊洓绉岖姸镐侊纴浠讳綍涓涓绾跨▼镶瀹氩勪簬杩椤洓绉岖姸镐佷腑镄勪竴绉嶏细

1)浜х敓锛圢ew锛夛细绾跨▼瀵硅薄宸茬粡浜х敓锛屼絾灏氭湭琚钖锷锛屾墍浠ユ棤娉曟墽琛屻傚傞氲繃new浜х敓浜嗕竴涓绾跨▼瀵硅薄钖庢病瀵瑰畠璋幂敤start()鍑芥暟涔嫔墠銆

2)鍙镓ц岋纸Runnable锛夛细姣忎釜鏀鎸佸氱嚎绋嬬殑绯荤粺閮芥湁涓涓鎺掔▼鍣锛屾帓绋嫔櫒浼氢粠绾跨▼姹犱腑阃夋嫨涓涓绾跨▼骞跺惎锷ㄥ畠銆傚綋涓涓绾跨▼澶勪簬鍙镓ц岀姸镐佹椂锛岃〃绀哄畠鍙鑳芥e勪簬绾跨▼姹犱腑绛夊緟鎺掓帓绋嫔櫒钖锷ㄥ畠锛涗篃鍙鑳藉畠宸叉e湪镓ц屻傚傛墽琛屼简涓涓绾跨▼瀵硅薄镄剆tart()鏂规硶钖庯纴绾跨▼灏卞勪簬鍙镓ц岀姸镐侊纴浣嗘樉钥屾槗瑙佺殑鏄姝ゆ椂绾跨▼涓崭竴瀹氭e湪镓ц屼腑銆

3)姝讳骸锛图ead锛夛细褰扑竴涓绾跨▼姝e父缁撴潫锛屽畠渚垮勪簬姝讳骸鐘舵併傚备竴涓绾跨▼镄剅un()鍑芥暟镓ц屽畬姣曞悗绾跨▼灏辫繘鍏ユ讳骸鐘舵併

4)锅沧粸锛圔locked锛夛细褰扑竴涓绾跨▼澶勪簬锅沧粸鐘舵佹椂锛岀郴缁熸帓绋嫔櫒灏变细蹇界暐瀹冿纴涓嶅瑰畠杩涜屾帓绋嬨傚綋澶勪簬锅沧粸鐘舵佺殑绾跨▼閲嶆柊锲炲埌鍙镓ц岀姸镐佹椂锛屽畠链夊彲鑳介吨鏂版墽琛屻傚傞氲繃瀵逛竴涓绾跨▼璋幂敤wait()鍑芥暟钖庯纴绾跨▼灏辫繘鍏ュ仠婊炵姸镐侊纴鍙链夊綋涓ゆ″硅ョ嚎绋嬭皟鐢╪otify鎴杗otifyAll钖庡畠镓嶈兘涓ゆ″洖鍒板彲镓ц岀姸镐併

2.classThread涓嬬殑甯哥敤鍑芥暟鍑芥暟

2.1suspend()銆乺esume()

1)阃氲繃suspend()鍑芥暟锛屽彲浣跨嚎绋嬭繘鍏ュ仠婊炵姸镐併傞氲繃suspend()浣跨嚎绋嬭繘鍏ュ仠婊炵姸镐佸悗锛岄櫎闱炴敹鍒皉esume()娑堟伅锛屽惁鍒栾ョ嚎绋嬩笉浼氩彉锲炲彲镓ц岀姸镐併

2)褰撹皟鐢╯uspend()鍑芥暟钖庯纴绾跨▼涓崭细閲婃斁瀹幂殑钬滈挛镙囧织钬濄

渚11锛

classextendsThread{

publicstaticintshareVar=0;

public(Stringname){

super(name);

}

publicvoidrun(){

if(shareVar==0){

for(inti=0;i<5;i){

shareVar;

if(shareVar==5){

this.suspend();//锛1锛

}}}

else{

System.out.print(Thread.().getName());

System.out.println("shareVar="shareVar);

this.resume();//锛2锛

}}

}

publicclassTestThread{

publicstaticvoidmain(String[]args){

t1=new("t1");

t2=new("t2");

t1.start();//锛5锛

//t1.start();//锛3锛

t2.start();//锛4锛

}}

阅读全文

与Java多线程Queue相关的资料

热点内容
q7的压缩比 浏览:375
什么叫源码编译器 浏览:227
加密数字货币的市场 浏览:245
linux切换数据库的命令是 浏览:944
武汉车子解压可以自己办吗 浏览:169
代理服务器有什么功效 浏览:755
我是华为手机快手app在哪里找 浏览:812
日语中的命令行介绍 浏览:939
中央编译局比较政治学 浏览:543
管道计算app中公式如何看到 浏览:864
pythonsocket下载 浏览:822
查看所有进程的命令 浏览:3
数码摄影圣经pdf 浏览:787
苹果耳机照片怎么加密 浏览:653
电脑保存命令 浏览:786
怎么安装苏宁推客app 浏览:389
田英章7000常用字pdf 浏览:358
python爬虫起点 浏览:403
三维图常见命令 浏览:677
美的压缩机保修几年 浏览:136