多线程下如何唤醒指定线程

问题描述

看了一下午还没弄明白,java里如何唤醒指定线程以下是我编的例子,希望实现在主函数里挂起,唤醒Thread1或者Thread2。暂时不考虑使用while(boolean){wait()}的方法线程代码如下packagecom.JW;classChildThreadimplementsRunnable{Stringm_strThreadName;longm_nTime;ThreadMyThread;ChildThread(StringThreadName,longTime){this.m_strThreadName=ThreadName;this.m_nTime=Time;MyThread=newThread(this,this.m_strThreadName);MyThread.start();}publicvoidrun(){for(inti=0;i<10;i++){System.out.println(m_strThreadName+"Thread:"+i);try{Thread.sleep(m_nTime);}catch(InterruptedExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}}publicclassTest_Thread{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubChildThreadThread1=newChildThread("ChildThread1",500);ChildThreadThread2=newChildThread("ChildThread2",500);Thread2.MyThread.setPriority(Thread.NORM_PRIORITY+2);while(Thread1.MyThread.isAlive()||Thread2.MyThread.isAlive());System.out.println("MainThread");}}

解决方案

解决方案二:
自己顶,不能沉
解决方案三:
楼主是不想用标志位的方法吗,就是while(booleanflag)这种方法
解决方案四:
根本就没有调用唤醒线程的方法,并且ChildThread中的MyThread看着好奇怪。
解决方案五:
java.util.concurrent.lock包中的lockSupport可以唤醒指定的阻塞线程。有关JUC的介绍见
解决方案六:
lock的方法我也看过,但是编到程序里老是不对,大神,能不能说细致点。我这程序到底怎么改啊
解决方案七:
如果我在run方法里加入if(i==5){wait()}。我如何在主线程唤醒指定的Thread1或者Thread2?
解决方案八:
1、sleep中的线程,除非到了时间,不然无法人为去唤醒,所以楼主不要在这方面下功夫了。2、一般都使用wait/notify进行线程间的通信,所以楼主还是考虑下这对组合吧,不要钻牛角尖
解决方案九:
自己再看看理论吧,把你知道的掌握的理论和你的问题节点说清楚哈,自己动手,一键搞定
解决方案十:
wait/notifyALL这对信程通信,也不能唤醒指定线程,而只是唤醒等待线程进入就绪序列。而CPU执行的不一定就是你的指定的线程,它是不可控的。
解决方案十一:
对啊,我就是遇到了9楼说的那个问题,才来问大家的啊
解决方案十二:
请问为什么要唤醒指定线程

时间: 2024-09-22 06:06:00

多线程下如何唤醒指定线程的相关文章

如何唤醒指定线程

问题描述 看了一下午还没弄明白,java里如何唤醒指定线程以下是我编的例子,希望实现在主函数里挂起,唤醒Thread1或者Thread2.暂时不考虑使用while(boolean){wait()}的方法线程代码如下packagecom.JW;classChildThreadimplementsRunnable{Stringm_strThreadName;longm_nTime;ThreadMyThread;ChildThread(StringThreadName,longTime){this.m

多线程暂停和唤醒-java线程暂停和唤醒问题

问题描述 java线程暂停和唤醒问题 java线程如何暂停,暂停的时间未知.之后又可以在程序中唤醒呢? 解决方案 在数据不可用的时候,当前线程里wait:在数据可用的时候,当前线程notify 举个例子,如果一个自定义队列,有生产者线程和消费者线程: 那么,如果消费者发现队列里拿不到数据了,队列空了,那么就wait: 生产者一直在生产,如果生产了一条数据,插入队列以后,马上notifyAll,自然就把消费者唤醒了. 请举一反三. 解决方案二: java线程的暂停与唤醒测试java 线程阻塞的问题

如何使用线程局部存储实现多线程下的日志系统

概述 通常来说,在应用程序中需要日志来记录程序运行的状态,以便后期问题的跟踪定位.在日志系统的设计中,通常会有一个总的日志系统来统一协调这些日志的设置如位置.输出级别和内容等.在多线程编程中,当每个线程都需要输出日志时,因为要考虑线程间的同步,日志系统的设计更加复杂. 在单线程应用程序中,通常使用一个日志单例向某个文件输出应用运行过程中的重要日志信息,但是在多线程环境中,这样做显然不好,因为各个线程打印出的日志会错综复杂从而使得日志文件不容易阅读和跟踪.比较好的办法是主线程记录自己的日志,各个子

JDBC一个connection下多线程查询表数据会产生线程等待

问题描述 JDBC一个connection下多线程查询表数据会产生线程等待 案例: 从Oracle数据库将表及数据通过JDBC的方式采集到另一Oracle数据库,数据量均为千万级,从源数据库读取的时候采用ORACLE的ROWNUM分页方式,JDBC每次读取1000条,批量插入目标库,测试发现ORACLE的ROWNUM分页效率很是问题,越到后面越慢,WEBLOGIC后台甚至出现线程请求超时. 后来采用多线程的方式,创建一个连接,后台起100个线程,测试发现跟单线程的效率差不了多少,分析代码后,线程

[Java] 多线程下生产者消费者问题的五种同步方法实现

版权声明:请尊重个人劳动成果,转载注明出处,谢谢! 目录(?)[+] 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题.    生产者消费者模式的优点 - 解耦 - 支持并发 - 支持忙闲不均 解决方法可分为两类:   (1)用信号量和锁机制实现生产者和消费者之间的同步:    - wait() / notify()方法  - await() / signal()方法  - BlockingQueue阻塞队列方法  - Semaphore方法    (2)在生产者和消费者之间建立一

浅析Python多线程下的变量问题

  这篇文章主要介绍了Python多线程下的变量问题,由于GIL的存在,Python的多线程编程问题一直是开发者中的热点话题,需要的朋友可以参考下 在多线程环境下,每个线程都有自己的数据.一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁. 但是局部变量也有问题,就是在函数调用的时候,传递起来很麻烦: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 def process_student(name): std =

ASP.NET多线程下使用HttpContext.Current为null解决方案

问题一:多线程下获取文件绝对路径   当我们使用HttpContext.Current.Server.MapPath(strPath)获取绝对路径时HttpContext.Current为null,解决办法如下:        ///          /// 获得当前绝对路径         ///          /// 指定的路径         /// 绝对路径         public static string GetMapPath(string strPath)       

java中多线程下静态connection的问题

问题描述 java中多线程下静态connection的问题 普遍观点是不要使用静态的连接,但是--我面临的需求情况是1.数据只查不改2.该连接只在用户登陆时使用,而其他过程有单独的连接池(与登录不是一个库),用池觉得浪费3.可能在同一时间有几千人同时登陆,而一天内的其他时间登录次数很少.以下是部分代码: public class CWJdbcConnection { private static Map<String String> map = new GetFile().getFile(Fc

django,性能测试,以及对fastcgi下进程模型和线程模型的分析

/** *作者:张荣华 *日期:2008-11-15 **/ 之前网上有很多关于django的测试,他们的测试结果都表明django在fastcgi模式下,使用线程模型要比进程模型快,而且更稳定,具体文章见:http://irobot.blog.hexun.com/20332312_d.htmlhttp://taoyh163.blog.163.com/blog/static/19580356200802433559850/ 但是ahuaxuan根据操作系统的原理判断结果不应该是这样,理论上来讲,