当前位置:首页 » 编程语言 » java线程等待

java线程等待

发布时间: 2022-04-18 05:59:22

Ⅰ 在java中同时起多个线程,然后怎么让多个线程进入等待状态

class MyThread extends Thread {
static Object lock = new Object();
public void run() {
// TODO Auto-generated method stub

}
public void toWait() {
synchronized(lock){
try {
lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void toNotifyAll(){
synchronized(lock){
lock.notifyAll();
}
}
}
//让线程对象在run方法中调用toWait使其等待,调用静态方法toNotifyAll唤醒所有线程

Ⅱ java中的join是如何让主线程等待的

join就是阻塞调用线程,直到该线程结束后,调用线程才能继续执行。
该影响只存在于执行join方法的线程和调用该线程的线程之间
如在t1线程中调用t2.join(),则需要t2线程执行完后t1方能继续执行

Ⅲ Java如何等待子线程执行结束

先调用
shutdown
在调用
isTerminated
例:
/*
* 采用线程池开启多个子线程,主线程等待所有的子线程执行完毕
*/
public static void moreThread() {
try {
int threadNum = 0;
for (int i = 0; i < 10; i++) {
threadNum++;

final int currentThreadNum = threadNum;
exe.execute(new Runnable() {

@Override
public void run() {
try {
System.out.println("子线程[" + currentThreadNum + "]开启");
Thread.sleep(1000*10);
} catch (InterruptedException e) {
e.printStackTrace();
}finally{
System.out.println("子线程[" + currentThreadNum + "]结束");
}
}
});
}

System.out.println("已经开启所有的子线程");
exe.shutdown();
System.out.println("shutdown():启动一次顺序关闭,执行以前提交的任务,但不接受新任务。");
while(true){
if(exe.isTerminated()){
System.out.println("所有的子线程都结束了!");
break;
}
Thread.sleep(1000);
}

} catch (InterruptedException e) {
e.printStackTrace();
}finally{
System.out.println("主线程结束");
}
}

Ⅳ java 中有两个线程怎样等待一个线程执行完毕

这个可以有2种解决方案,notify,wait实现 以及CountDownLatch,
我贴一个CountDownLatch的实现

public class Test4 {

class DTask implements Runnable
{
private CountDownLatch downLatch;

private String name;

public DTask(CountDownLatch downLatch,String name)
{
this.downLatch =downLatch;
this.name =name;
}

public void run()
{
if(name.equals("A"))
try {
this.downLatch.await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i=0;i<100;i++)
{
System.out.println(Thread.currentThread().getName()+"====>"+i);
}

//if(name.equals("B"))
this.downLatch.countDown();
}

}

public static void test1()
{
ExecutorService service =Executors.newFixedThreadPool(2);
Object obj =new Object();
Test4 tt =new Test4();
CountDownLatch downLatch = new CountDownLatch(1);
service.execute(tt.new DTask(downLatch,"A") );
service.execute(tt.new DTask(downLatch,"B") );
service.shutdown();

}

public static void main(String[] args)
{
test1();

}

}

Ⅳ 这段java 多线程代码为什么id是1的线程一直在等待

从代码来看,每个线程的o都不是同一个。1线程的o.wait()后,只执行了2线程的o.notifyAll()。所以1线程会一直处于等待中。如果要达到你的要求,修改构造函数,去掉o = new Object();这句。因为这句会在每次初始化一个新线程时,改变o的指向。

Ⅵ java callable 怎么让主线程等待

在你的
主线程
中用一个JOIN的方法,你要等待谁,就用谁调用,比如,你要等待线程A结束,就用A.JOIN();这样就可以了。记住哦,这条语句写在哪个线程里,哪个线程就要等待调用这个方法的其他线程。就是说,你在主线程里写了这条语句,那么主线程就要等待线程A执行完后,主线程才会执行

Ⅶ java 线程为什么会排队等待

主要是有共享资源的时候,防止两个以上的线程同时修改,最后结果出错,所以只能让一个线程得到锁,其他线程等待

Ⅷ java 中当一线程处于等待状态时,用什么方法可以将其唤醒

如果线程在睡觉,调用这个线程对象的interrupt方法
如果这个线程在等待一个对象的锁,那么调用那个对象的notifyAll方法

Ⅸ java多线程相互等待

1、存在处以业务逻辑类,存在map,初始化。
2、存在线程池 最大200,ThreadFactory可以默认
3、单线程处理ip的类,构造方法包含是需参数Map,
4、外部循环 调用线程池,生成线程 传参 map 和当前循环次数
5、线程处理完ip后,将外部传来的循环次数做key,结果做value插入map,唤醒主线程判断map中的数量是否==需处理的ip的数量,选择跳出或继续等待。

Ⅹ 等待线程,java问题,怎么解决

简单地可以使用 Thread.join() 方法来等待线程结束,例如这样修改一下:

Thread t = new Thread() { // 同原来的 run()};t.start(); // 调用这个方法,会挂起当前线程直至线程t结束t.join();

join()方法的文档是这么写的: Waits for this thread to die.
也可以用wait/notify或mutex等机制来对两个线程进行同步,稍微复杂一点,例如使用 wait/notify:

new Thread() { public void run() { // 同原来的代码,加上以下代码用于同步 synchronized (results) { results.notifyAll(); } }}.start(); // 通过以下代码挂起当前线程,等待其他线程通知synchronized (results) { results.wait();}

以供参考。
同 i178269245 所说,等待线程结束势必要挂起当前线程,也就没必要用线程了,也许需要重新考虑一下这种实现方式。

热点内容
tampermonkey脚本 发布:2025-01-22 18:53:17 浏览:116
windows7共享文件夹 发布:2025-01-22 18:53:17 浏览:478
如何调节安卓手机的内存 发布:2025-01-22 18:49:30 浏览:638
佳能相机存储卡怎么取消 发布:2025-01-22 18:40:59 浏览:568
天猫宝贝上传 发布:2025-01-22 18:35:09 浏览:544
ipad如何登录金铲铲安卓账号 发布:2025-01-22 18:32:09 浏览:319
加密沟通 发布:2025-01-22 18:31:22 浏览:555
win7ftp用户名和密码设置 发布:2025-01-22 17:46:48 浏览:221
三表联查的sql语句 发布:2025-01-22 17:27:13 浏览:418
安卓怎么解压分卷压缩 发布:2025-01-22 17:24:59 浏览:721