Java中join的使用

join用于主线程等待子线程运行完毕它的run方法,再继续执行下面的代码。

join() = join(0),主线程无限等待子线程执行完毕。

join(n milliseconds),主线程只等待n毫秒,n毫秒后无论子线程是否执行完毕,主线程都将继续执行下面的代码。

package com.jack.test;

public class TestJoin implements Runnable{
    public static int a = 0;

    public void run(){
        try{
            Thread.sleep(1100);
            for(int i = 0; i < 5; i++){
                a = a +1;
            }
            System.out.println("after for loop, a="+a);
        }catch(InterruptedException e){
            e.printStackTrace();
        }

    }

    public static void main(String[] args) throws InterruptedException{
        Runnable r = new TestJoin();
        Thread t = new Thread(r);
        t.start();
        t.join();
        System.out.println(a);
    }

}
时间: 2024-07-31 22:18:02

Java中join的使用的相关文章

Java中的split和join

Javascript中的用于字符串和数组之间转换的split和join函数使用起来非常方便,在Java中也有这两个函数,只不过join是在apache commons的lang库里实现的. 1 import org.apache.commons.lang3.StringUtils; 2 3 public class SplitJoin { 4 public static void main(String[] args){ 5 String str = "a|b|c|d|e|f|g";

java中synchronize锁 volatile thread.join()方法的使用

对于并发工作,你永远不知道一个线程何时运行,你需要某种方式来避免两个任务访问相同的资源,即要避免资源竞争,至少在关键代码上不能出现这样的情况,否则多个线程同时对某个内存区域操作会导致数据破坏. 程序代码中的临界区是需要互斥访问的,同一时刻只能有一个线程来访问临界区,也就是线程对临界区的访问时互斥的. 竞争条件:当多个线程同时访问某个共享的内存区域并且对其进行读写操作时,就会出现数据破坏.这就是竞争条件.避免竞争条件的方法是synchronized加锁. 样例,设有一个现成,该线程的任务是对共享变

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中的多线程

对于直接继承Thread的类来说,代码大致框架是: 1 2 3 4 5 6 7 8 9 10 11 12 class 类名 extends Thread{ 方法1; 方法2: … public void run(){ // other code… } 属性1: 属性2: … } 先看一个简单的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 /**  * @author Rollen-Ho

Java中不同的并发实现的性能比较

Fork/Join框架在不同配置下的表现如何? Java 8的并行流也是毁誉参半.并行流(Parallel Stream)的语法糖令人兴奋不已.现在Java中实现并发编程存在多种方式,我们希望了解这么做所带来的性能提升及风险是什么.从经过260多次测试之后拿到的数据来看,还是增加了不少新的见解的,这里我们想和大家分享一下. ExecutorService vs. Fork/Join框架 vs. 并行流 在10年前,Java的并发还只能通过第三方库来实现.然后Java 5到来了,并引入了java.

Java中终止正在运行线程

问题:java 中如何让一个正在运行的线程终止掉? Demo_1: class TT implements Runnable { private boolean flag = true; @Override public void run() { int i = 0; while(flag) { System.out.println("child thread: "+i++); } } public void shutDowm() { flag = false; } } class T

Java中的多线程你只要看这一篇就够了

Java中的多线程你只要看这一篇就够了 引 如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其实只有一半对,因为反应"多角色"的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的"生产者,消费者模型". 很多人都对其中的一些概念不够明确,如同步.并发等等,让我

Java中的进程和线程

 Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程. 进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问

java中关键字volatile的作用

用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致的情况.volatile就是用来避免这种情况的.volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) =========================分割线1================================= 版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本