Java线程切换,当B线程执行完成后告诉A线程我执行完了,关键A线程一直是执行的 解释下题目的意思: 1、A是主线程,B线程是在A线程里启动的。 2、现在要做的事情就是A在不断的执行自己的事情,处理数据等操作。 3、B是去网络请求数据,等请求完成后通知A线程我已经执行完成了,你可以拿数据做点什么。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Class AThread extends Thread { public void run() { BThread b = new BThread(); b.start(); .... b.join(); }} A线程一直执行没关系,关键B有没通知到A且A本来是否有准备要做B通知后的事情Thread A:while(working) { doCommonWorks(); if(notifiedByB) { doRelatedWorks(); }} 这个是解决的方法之一,但总是去判断一boolean值也不好呀! 这个会让A线程卡住的,这样A线程就不能做事情,必须要等到B线程完成才可以 先把a线程wait掉,然后b去获取资源,等到回去到了资源再把a唤醒就可以了啊 不需要那么麻烦线程间共享一个阻塞队列 (BlockQueue接口的实现)A线程从队列上take数据即可,take方法是阻塞方法B线程将需要A处理的数据offer/put进队列就行了 关于tomcat集群+Struts2性能的问题 java程序备份恢复mysql数据库问题.急!!!求解!!! 接java项目 Struts2+Hibernate+Spring 事物 Session is closed! 在做一个网站时,怎么控制网站特定位置上的图片的更改(我用的是servlet+jsp) struts判断标签 java虚拟现实中怎样应用? 输入流问题 求助Struts中的validation.xml问题。 关于ejb中客户端如何引用服务器home接口的问题? JAVA word转html weblogic集群+apache如何设计架构,求中间件高手!
BThread b = new BThread();
b.start();
....
b.join();
}
}
doRelatedWorks();
}}
线程间共享一个阻塞队列 (BlockQueue接口的实现)
A线程从队列上take数据即可,take方法是阻塞方法
B线程将需要A处理的数据offer/put进队列就行了