导航:首页 > 编程语言 > 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相关的资料

热点内容
压缩气管阀门 浏览:457
pdf推文 浏览:353
69程序员 浏览:577
阿里云服务器镜像如何迁移到腾讯 浏览:979
安卓如何显示日期在状态栏 浏览:800
cadsplt这个命令用不了 浏览:463
安卓夸克怎么取消监管 浏览:662
pdf怎么裁剪图片 浏览:436
黑上宏命令 浏览:644
mac解压压缩包有密码 浏览:704
命令与征服知乎 浏览:561
小时代pdf 浏览:221
化工设备第三版答案pdf 浏览:465
防火卷帘控制器单片机程序 浏览:16
rdlcpdf 浏览:109
链表实现快速排序python 浏览:590
php输出命令 浏览:987
d站app叫什么名字 浏览:172
oppor系列如何解除应用加密 浏览:602
程序员那么可爱姜逸城初恋 浏览:501