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);//or...
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中是lockedbyobject的所以添加就可以用于线程同步锁定对象
可以作为多线程处理多任务的存放task的队列。他的client包括封装好的task类以及thread类
Java的多线程-线程间的通信2009-08-2521:58
1.线程的几种状态
线程有四种状态,任何一个线程肯定处于这四种状态中的一种:
1)产生(New):线程对象已经产生,但尚未被启动,所以无法执行。如通过new产生了一个线程对象后没对它调用start()函数之前。
2)可执行(Runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它。当一个线程处于可执行状态时,表示它可能正处于线程池中等待排排程器启动它;也可能它已正在执行。如执行了一个线程对象的start()方法后,线程就处于可执行状态,但显而易见的是此时线程不一定正在执行中。
3)死亡(Dead):当一个线程正常结束,它便处于死亡状态。如一个线程的run()函数执行完毕后线程就进入死亡状态。
4)停滞(Blocked):当一个线程处于停滞状态时,系统排程器就会忽略它,不对它进行排程。当处于停滞状态的线程重新回到可执行状态时,它有可能重新执行。如通过对一个线程调用wait()函数后,线程就进入停滞状态,只有当两次对该线程调用notify或notifyAll后它才能两次回到可执行状态。
2.classThread下的常用函数函数
2.1suspend()、resume()
1)通过suspend()函数,可使线程进入停滞状态。通过suspend()使线程进入停滞状态后,除非收到resume()消息,否则该线程不会变回可执行状态。
2)当调用suspend()函数后,线程不会释放它的“锁标志”。
例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)
}}
2023-04-26
mengvlog 阅读 4 次 更新于 2025-07-19 04:49:10 我来答关注问题0
  •  深空见闻 java多线程有几种实现方法例子

    Java多线程主要有三种实现方法:继承Thread类、实现Runnable接口、实现Callable接口。1. 继承Thread类(基础方式):这种方法通过创建一个继承Thread类的子类,并重写run()方法来实现多线程。在run()方法中编写需要并行执行的代码。创建线程对象后,通过调用start()方法来启动线程。这种方式简单直观,但Java只...

  •  1024程序酱 用Java实现多线程有哪些途径?

    1,创建Thread类的子类 在这个途径中,用户程序需要创建自己的Thread类的子类,并在子类中重新定义自己的run()方法,这个run()方法中包含了用户线程的操作。这样在用户程序需要建立自己的线程时,它只需要创建一个已定义好的Thread子类的实例就可以了。例:public class TestThread{ ...(中间的就不写了...

  •  约定20125 JAVA多线程有哪几种实现方式

    1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多...

  •  阿暄生活 implementsrunnable

    将Runnable实例传递给Thread类的构造函数:创建一个Thread对象,并将Runnable实例作为参数传递给Thread类的构造函数。调用Thread对象的start()方法:启动线程,自动调用Runnable实例的run()方法。四、总结 实现Runnable接口是Java中实现多线程的一种灵活且常用的方式。它不仅可以避免继承的局限,还可以方便地实现...

  •  crazylucky_wei java多线程关于消费者和生产者,求源程序,求大神解答。愿意提高报酬

    import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.LinkedBlockingQueue;public class BlockingQueueTest { public static void main(String[] args) { ExecutorService service = Executors.newCachedThread...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部