Java 多线程之--- Thread.join介绍

许久许久没有写过博客了,以前上班总是没有时间,但是总感觉写博客还是很好的一种记录自己技术进程的一种方式

于是在辞职后来到北软,又一次上学了,又一次有时间来写博客了,所以再次开始写博客了,呵呵,再次当学生的感觉

真好!!!!

这次说的是Thread的join方法,以前总是使用他的run和sleep方法,哪两个都是比较清楚的,对于这个join方法,他的

主要功能就是,当你在一个方法里面调用其他的线程的时候,如果使用了类似thread1.join(),这样的话,这个调用的线程

就开始一直等待thread1这个线程返回,什么时候thread1这个线程的run方法运行完了返回了,这个当前的主线程才会继

续向下运行。当然,join还有两个参数方法,这个参数的意思就是,首先等待这个线程调用完,比如

thread1.sleep(1000),这样主线程就会等待thread1运行,直到thread1运行完返回或者当前主线程等待超过1秒钟就会不

理这个thread1线程继续向下执行。代码如下

package com.bird.concursey;

import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * 数据源
 * @author bird
 * 2014年9月15日 下午10:10:04
 */
public class DataSourceLoader implements Runnable{

	public void run() {
		System.out.println("begining the data source loding" + new Date());
		try {
			TimeUnit.SECONDS.sleep(4);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("begining the data source loding" + new Date());
	}

	public static void main(String[] args) {
		DataSourceLoader dsLoader = new DataSourceLoader();
		Thread thread1 = new Thread(dsLoader, "dsloader");
		NetworkConnectionsLoader ncLoader = new NetworkConnectionsLoader();
		Thread thread2 = new Thread(ncLoader, "ncloader");
		thread1.start();
		thread2.start();
		try {
			thread1.join();
		//	thread2.join(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(new Date());
	}
}
package com.bird.concursey;

import java.util.Date;
import java.util.concurrent.TimeUnit;

public class NetworkConnectionsLoader implements Runnable {

	public void run() {
		System.out.println("begining the data source loding" + new Date());
		try {
			TimeUnit.SECONDS.sleep(6);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("begining the data source loding" + new Date());
	}

}
begining the data source lodingMon Sep 15 22:27:41 CST 2014
begining the data source lodingMon Sep 15 22:27:41 CST 2014
begining the data source lodingMon Sep 15 22:27:45 CST 2014
Mon Sep 15 22:27:46 CST 2014
begining the data source lodingMon Sep 15 22:27:47 CST 2014

时间: 2024-10-11 02:17:17

Java 多线程之--- Thread.join介绍的相关文章

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多线程01(Thread类、线程创建、线程池)

Java多线程(Thread类.线程创建.线程池) 第一章 多线程 1.1 多线程介绍 1.1.1 基本概念 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序. 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 1.1.2 单线程程序 - 从入口m

Java 多线程(1)-Thread和Runnable

一提到Java多线程,首先想到的是Thread继承和Runnable的接口实现 Thread继承 public class MyThread extends Thread { public void run(){ int i = 0; System.out.println("--------------"+i++); } } Runnable接口实现 public class RunnableImpl implements Runnable { private long value =

Java多线程extends Thread和implements Runnable

大家都知道,要实现Java多线程的两种方式 a:是直接继承Thread类,b:是实现Runnable接口. 先上代码: a:是直接继承Thread类, public class ThreadDemo1 extends Thread {    public void run(){        //Thread.currentThread().getName() 和 this.getName()都可以用来获得线程的名称        System.out.println("线程的名称:"

java多线程wait notify join

wait notify 几个注意点: wait 与 notify/notifyAll 方法必须在同步代码块中使用,即要先对调用对象加锁. 当线程执行wait()时,会把当前的锁释放,然后让出CPU,进入等待状态. 当执行notify/notifyAll方法时,会唤醒一个处于等待该 对象锁 的线程,然后继续往下执行,直到执行完退出对象锁锁住的区域(synchronized修饰的代码块)后再释放锁. 从这里可以看出,notify/notifyAll()执行后,并不立即释放锁,而是要等到执行完临界区中

java多线程创建-Thread,Runnable,callable和threadpool

java创建多线程的方式有许多种,这里简要做个梳理 1. 继承Thread类 继承java.lang.Thread类,创建本地多线程的类,重载run()方法,调用Thread的方法启动线程.示例代码如下: MyThread.java public class MyThread extends Thread { public void run(){ private int copy = 0; System.out.println("Thread id:" + Thread.current

Java 多线程之 Thread 类 和 Runnable 接口初步使用

Thread 类 Thread 类是在 JDK1.0 时就存在的, 在 Java 中接触的多线程开发基本上都会从这个类开始. Thread之定义线程类 使用 Thread 创建线程的方法很简单, Thread 是一个类, 在需要创建线程时, 我们只需要继承这个类, 并将 run() 方法进行重写即可. class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = min

Java多线程中的join方法

新建一个Thread,代码如下: 1 package com.thread.test; 2 3 public class MyThread extends Thread { 4 private String name; 5 public MyThread(String name) { 6 this.name = name; 7 } 8 @Override 9 public void run() { 10 for (int i = 0; i < 100; i++) { 11 System.out.

java 多线程8(join)

join():  加入.一个线程如果执行了join语句,那么就有新的线程加入,执行该语ij 句的线程必须要让步给新加入的线程先完成任务,然后才能继续执行. import java.util.Scanner; import static sun.misc.Version.print; public class EX10 { public static void main(String[] args) { Mom m = new Mom(); m.run();//不用调run 吗?他们两个为什么 /