如何在多个线程执行完后再执行某个方法

零起跑线 2011-05-19 12:03:24
问题描述

有一个方法
public boolean Login(){

Thread t1 = new Thread();
Thread t2 = new Thread();

t1.start();
t2.start();

return true;
}
如何在t1,t2运行结束后,再执行return true;这句
...全文
735 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
零起跑线 2011-05-20
  • 打赏
  • 举报
回复
刚测了一下,这个是正确的,是我理解错了
[Quote=引用 9 楼 keeya0416 的回复:]
Java code

public boolean Login() {

Thread t1 = new Thread();
Thread t2 = new Thread();

t1.start();
t2.start();

try {
t1.join();
……
[/Quote]
零起跑线 2011-05-20
  • 打赏
  • 举报
回复
我感觉这里有等待t1线程结束,然后执行t2线程,最后执行return true,那要多线程有何用?
[Quote=引用 9 楼 keeya0416 的回复:]
Java code

public boolean Login() {

Thread t1 = new Thread();
Thread t2 = new Thread();

t1.start();
t2.start();

try {
t1.join();
……
[/Quote]
keeya0416 2011-05-19
  • 打赏
  • 举报
回复

public boolean Login() {

Thread t1 = new Thread();
Thread t2 = new Thread();

t1.start();
t2.start();

try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
t2.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
JaredJared 2011-05-19
  • 打赏
  • 举报
回复
final CountDownLatch latch = new CountDownLatch(threadSize);

线程在执行完后调用latch.countDown();
public void run() {
xxxxxxx
latch.countDown();
}
//主线程等待
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
return true;
zhu6100441 2011-05-19
  • 打赏
  • 举报
回复
其实一直没搞懂,join方法是拿来干什么的,求解释帝。
chosen0ne 2011-05-19
  • 打赏
  • 举报
回复
可以用CyclicBarrier,它可以并行执行一组任务,然后再进行下一个步骤之前等待,直到所有任务都完成。


CyclicBarrier barrier=new CyclicBarrier(n, new Runnable(){//n表示有几个线程
public void run(){
//所有线程执行完,然后进行处理
}
});



其它的线程在运行完自己的任务后,要调用barrier.await(),如果还有未完成的线程,则这个线程会阻塞;否则,所有的线程的任务执行完毕,会执行传入CyclicBarrier中的Runnable的run方法
mtv0199 2011-05-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 blvyoucan 的回复:]

我把你的方法变通了一下
Java code

public boolean login(){
Thread t1 = new Thread();
Thread t2 = new Thread();
t1.start();
t2.start();
while(t1.isAlive() || t2.isAlive()){

}
return true;
}


引用……
[/Quote]
零起跑线 2011-05-19
  • 打赏
  • 举报
回复
我把你的方法变通了一下

public boolean login(){
Thread t1 = new Thread();
Thread t2 = new Thread();
t1.start();
t2.start();
while(t1.isAlive() || t2.isAlive()){

}
return true;
}

[Quote=引用 1 楼 mtv0199 的回复:]
boolean t1End = t2End = false;

......


while(t1End && t2End){
}
return true;

线程里面改变值
[/Quote]
SantaRosa 2011-05-19
  • 打赏
  • 举报
回复
如果你Login这个方法也是在某个线程里,那么可以用资源锁的方式,await(),notify(),用这种方法,例子网上有的事。
如果不是的话,那么只能用1楼的方法了,不过要注意,要写一个synchronized方法来设置t1End和t2End,而不是直接取值。
零起跑线 2011-05-19
  • 打赏
  • 举报
回复
这个方法可行,不知道有没有其他方法
[Quote=引用楼主 blvyoucan 的回复:]
问题描述

Java code

有一个方法
public boolean Login(){

Thread t1 = new Thread();
Thread t2 = new Thread();

t1.start();
t2.start();

return true;
}
如何在t1,t2运行结束后,再执行return……
[/Quote]
mtv0199 2011-05-19
  • 打赏
  • 举报
回复
boolean t1End = t2End = false;

......


while(t1End && t2End){
}
return true;

线程里面改变值
小灰狼 2011-05-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 keeya0416 的回复:]
Java code

public boolean Login() {

Thread t1 = new Thread();
Thread t2 = new Thread();

t1.start();
t2.start();

try {
t1.join();
……
[/Quote]

+1

楼主,还有楼上几位菜鸟看看人家的这段代码吧
Thread.join() 方法干的就是楼主的这个工作
wula0010 2011-05-19
  • 打赏
  • 举报
回复

public boolean Login(){

Thread t1 = new Thread();
Thread t2 = new Thread();

t1.start();
t2.start();

boolean isRuning = true;
while (isRuning) {
if (t1.isAlive() || t2.isAlive()) {
isRuning = true;
}else {
isRuning = false;
}
}

return true;
}
lliiqiang 2011-05-19
  • 打赏
  • 举报
回复
可以设置两个static的boolean变量.一开始为false
两个线程结束时分别令其一个为true,主线程循环等待两个都是true时退出
WPS Office 2019 是一款功能丰富的办公软件套装,它整合了文字、表格、演示、PDF 等组件,具备体积小巧、功能丰富、兼容性强等特点,能满足日常办公的多种需求。 功能组件丰富:包含 WPS 文字、WPS 演示、WPS 表格、WPS PDF 等组件,可用于文档编辑、表格计算、幻灯片制作、PDF 处理等,支持 DOC、DOCX、XLS、XLSX、PPT 等多种格式,能与 Microsoft Office 较好地兼容。 支持云存储与协作:用户登录 WPS 账号后,可实现多终端、跨平台的数据同步,还能与他人协同办公,文档可通过微信、QQ 等社交平台一键分享。 PDF 功能强大:提供沉浸式 PDF 阅读体验和稳定的编辑服务,支持一键编辑 PDF 文档内容。借助 OCR 技术,可精准转换文档、表格、PPT、图片等格式的文件。 界面设计优化:具有全新视觉设计,默认皮肤舒适清爽,还支持桌面背景、界面字体、皮肤、格式图标等个性化设置。同时,文档标签可拖拽成独立窗口或合并,用户可自主选择文档显示方式,还能将文件放置在不同工作区,便于分类浏览与管理。 内置实用工具:内置了简单的网页浏览器,点击文档中的链接会默认用其打开,可进行网页添加到首页、另存为 PDF 等操作。此外,“应用中心” 集成了输出转换、文档助手、安全备份等多种实用功能。 模板资源丰富:稻壳商城提供了大量模板、范文、图片等素材资源,涵盖求职简历、总结计划、合同协议等常见文档类型,方便用户快速创建专业文档。 表格功能特色突出:支持通过关键词快速切换工作表,设有阅读模式和护眼模式。还可分类合并单元格,以及拆分合并单元格并填充内容。公式编辑器中可轻松完成公式嵌套,筛选时可通过 “仅筛选此项” 一步完成特定值筛选,还能根据筛选条件生成动态分析图表。另外,“特色功能” 和 “智能工具箱” 菜单中包含 PDF

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧