java 多线程-join插队

join
合并线程,插队线程,将此线程执行完成后,再执行其他线程,其他线程阻塞
join是一个成员方法,必须通过Thread对象调用

public class n {

public static void main(String[]args) throws InterruptedException
{
    Thread t =new Thread(()-> {
        for(int i=0;i<5;i++)
        {
            System.out.println("a"+i);
        }
    });
    t.start();

    for(int i=0;i<5;i++)
    {
        if(i%2==0)
        {
            t.join();//插队,此时main主线程被阻塞,插队线程执行完所有步骤再执行main
        }
        System.out.println("b"+i);
    }

}

}

例二:

public class n {

public static void main(String[]args) throws InterruptedException
{
    new Thread(new father()).start();

}

}

class father extends Thread{
public void run()
{
    System.out.println("想抽象,发现没了");
    System.out.println("让儿子买中华");
    Thread t=new Thread(new son());
    t.start(); //不行,各走各的逻辑错误,再加入join先执行完son,再执行father剩下的
    try {
        t.join();
    } catch (InterruptedException e) {

        e.printStackTrace();
    }
    System.out.println("接过烟");
}
}

class son extends Thread{
public void run()
{
    System.out.println("拿钱");
    System.out.println("路边玩10秒");
    for(int i=0;i<10;i++)
    {
        System.out.println(i+"秒过去了");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {

            e.printStackTrace();
        }
    }
    System.out.println("去买烟");
    System.out.println("回家");
}
}

原文地址:https://blog.51cto.com/14437184/2428884

时间: 2024-11-02 02:41:33

java 多线程-join插队的相关文章

java多线程--join函数

1. join()介绍 join() 定义在Thread.java中. join() 的作用:让"主线程"等待"子线程"结束之后才能继续运行.这句话可能有点晦涩,我们还是通过例子去理解: // 主线程 public class Father extends Thread { public void run() { Son s = new Son(); s.start(); s.join(); ... } } // 子线程 public class Son exten

java多线程join

目的:程序执行完任务后,再执行其他的任务. 实现原理: 使用Thread类的join()方法时.当一个线程对象的join()方法被调用是,调用它的线程将被挂起,直到这个线程对象完成它的任务. 代码:引用的java7并发编程实战手册示例代码 package com.packtpub.java7.concurrency.chapter1.recipe6.task; import java.util.Date; import java.util.concurrent.TimeUnit; /** * C

thread.join函数,java多线程中的join函数解析

join函数的作用,是让当前线程等待,直到调用join()的 线程结束或者等到一段时间,我们来看以下代码 1 package mian; 2 3 4 public class simpleplela { 5 static void threadMessage(String message) { 6 String threadName = 7 Thread.currentThread().getName(); 8 9 System.out.println(threadName+" "+m

java多线程控制函数setDaemon,join,interupt

1.setDeamon 设置线程为后台运行的函数 public class SetDaemon { public static void main(String[] args) throws InterruptedException { Thread tt=new Thread(new ThreadTest()); tt.setDaemon(true); //设置程序为后台运行 tt.start(); Thread.sleep(3); } } class ThreadTest implement

java多线程中join用法

thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B. package com.wzs; /** * Java多线程中join用法 * * @author Administrator * */ public class JoinTest { public static void main(String[] args) { BThread bThread = new B

Java多线程中join、yield、sleep方法详解

在Java多线程编程中,Thread类是其中一个核心和关键的角色.因此,对该类中一些基础常用方法的理解和熟练使用是开发多线程代码的基础.本篇主要总结一下Thread中常用的一些静态方法的含义及代码中的使用. sleep方法 源码如下: /** * Causes the currently executing thread to sleep (temporarily cease * execution) for the specified number of milliseconds, subje

Java多线程学习:Join()

方法join的作用是使所属的线程对象x正常执行run()方法中的任务,而使当前线程Z进行无限期的阻塞,等待线程X销毁后再继续执行线程Z后面的代码.一般用于子线程先执行完毕再继续执行主线程的情况. 但是join方法后面的代码会不会提前执行呢?看下面的代码 1 public class ThreadA extends Thread { 2 3 private ThreadB threadB; 4 5 public ThreadA(ThreadB threadB) { 6 super(); 7 thi

java多线程之述解

说起线程 就不得不提进程 他们之间的关系很紧密 进程:内存中运行的应用程序 每个进程都有自己的一块内存空间 而线程是进程中的一个执行单元 一个进程中可以有多个线程 多线程的好处就是可以并发操作程序 将cpu资源利用率最大化 就像我们生活中一样 当我们在一个视屏网站下电影的时候 我们可以去做一些其他的时间 不需要一直等着电影下完再去做不会耗费多余的时间 这就是多线程的好处 如何实现多线程呢 1.继承Thread类 然后重写run方法 2.实现Runnable接口实现重写·   特点 继承threa

1.1 Java多线程原理

###24.01_多线程(多线程的引入)(了解)* 1.什么是线程 * 线程是程序执行的一条路径, 一个进程中可以包含多条线程 * 多线程并发执行可以提高程序的效率, 可以同时完成多项工作* 2.多线程的应用场景 * 红蜘蛛同时共享屏幕给多个电脑 * 迅雷开启多条线程一起下载 * QQ同时和多个人一起视频 * 服务器同时处理多个客户端请求 ###24.02_多线程(多线程并行和并发的区别)(了解)* 并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行.(需要多核CPU)* 并发是指两