`
pouyang
  • 浏览: 321671 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java Thread

    博客分类:
  • Java
阅读更多
1 Tread join 方法
import java.util.Random;
/**
 * thread.join()应该是让当前线程block住,等thread执行完之后,再继续执行
 * 。比如有3个线程在执行计算任务,必须等三个线程都执行完才能汇总,那么这时候在主线程里面让三个线程join,最后计算结果既可。代码显示如下。
 * @author poy 2010-9-12 11:12:29
 */
public class ThreadJoinTest {
	public static void main(String[] args) {
		System.out.println("in " + Thread.currentThread().getName());
		long start = System.currentTimeMillis();
		CounterThread[] t = new CounterThread[3];
		for (int i = 0; i < t.length; i++) {
			t[i] = new CounterThread();
			t[i].start();
			try {
                t[i].join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
		}
		long end = System.currentTimeMillis();
		System.out.println("join total time = " + (end - start));
		int result = 0;
		for (int j = 0; j < t.length; j++) {
			result += t[j].getResult();
		}
		System.out.println("the result is " + result);
	}
}
class CounterThread extends Thread {
	
	private int result;
	
	public int getResult() {
		return result;
	}
	public void run() {
		try {
			int time = (new Random().nextInt() >>> 1) % 5000;
			Thread.sleep(time);
			System.out.println(Thread.currentThread().getName()
					+ " is blocked for " + time + "ms");
		} catch (InterruptedException ex) {
		}
		result = 5;
	}
}

运行结果:
in main
Thread-0 is blocked for 4255ms
Thread-1 is blocked for 4555ms
Thread-2 is blocked for 630ms
join total time = 9468
the result is 15

把 join方法注释掉,可以
//			try {
//                t[i].join();
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }

运行结果:
in main
join total time = 0
the result is 0
Thread-2 is blocked for 1579ms
Thread-1 is blocked for 1944ms
Thread-0 is blocked for 4215ms
分享到:
评论

相关推荐

    JavaThread

    JavaThread

    Java Thread用法 经典

    ### Java Thread用法详解 #### 一、Java线程基础概念与重要性 在Java编程语言中,线程是程序执行的基本单位之一,它能够帮助我们实现多任务处理,提高程序运行效率。Java中的线程主要通过`java.lang.Thread`类来...

    Java Thread Programming

    本资料“Java Thread Programming”由Paul Hyde提供,包含了关于Java线程编程的理论知识和实践代码,旨在帮助开发者深入理解和熟练掌握Java线程。 首先,我们来了解一下Java中线程的基本概念。在Java中,可以通过两...

    JAVA thread

    在Java编程语言中,线程(Thread)是执行单元,它允许程序同时执行多个任务。在"JAVA thread"这个主题中,我们主要关注的是如何在Java中创建和管理线程,以及如何通过线程实现并发执行,就像"龟兔赛跑"这个小游戏所...

    java thread dump 分析

    Java Thread Dump 分析 Java Thread Dump 分析是 Java 应用程序性能优化的重要工具之一。Thread Dump 是 JVM 的一个快照,记录了当前所有线程的状态,包括线程的 ID、名称、状态、锁信息等。通过分析 Thread Dump,...

    Java Thread Programming (Sams) java线程编程(含code)

    本资源“Java Thread Programming (Sams)”提供了详细的线程编程知识,结合了理论与实际代码,旨在帮助开发者深入理解并熟练掌握Java线程。 1. **线程概念** - 线程是操作系统调度的基本单位,一个进程可以包含多...

    java thread

    java 應用 thread 的小程式 計算 time 的

    Java thread dump analyzer (tda)

    Java线程分析工具(TDA)是一款专为Java开发者设计的强大工具,用于解析和理解Java应用程序的线程转储(thread dump)。线程转储是Java虚拟机(JVM)在特定时刻生成的一种快照,其中包含了应用程序中所有活动线程的状态...

    java Thread

    为保证不会出现卖出同一个票数,要java多线程同步锁。 设计思路:1.创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖...

    各种 Java Thread State 第一分析法则 - 旁观者 - 博客园

    各种 Java Thread State 第一分析法则

    Java Thread Dumps 分析

    Java线程转储(Thread Dump)是Java应用程序在特定时间点对所有运行线程的状态快照,它包含每个线程的详细信息,如线程ID、线程名称、线程状态以及栈轨迹。分析Java线程转储对于诊断Java应用程序中的性能问题、死锁...

    Java Thread in JVM

    Java Thread在JVM中的实现与理解 Java Thread是Java编程语言中处理并发执行的基本单元,它在Java虚拟机(JVM)中有着重要的地位。本文将深入探讨Java Thread的语法特性以及其在JVM内部的编译结果,帮助开发者更好地...

    Java Thread Dump Analyzing

    Java Thread Dump Analyzing

    JStack和Java Thread Dumps分析

    ### JStack和Java Thread Dumps分析 #### 一、引言 在Java应用程序开发与维护过程中,时常会遇到性能瓶颈或死锁等问题。这些问题往往难以定位,尤其当系统处于高负载下时,更是如此。此时,`JStack`工具便显得尤为...

    Java Thread多线程全面解析

    Java Thread多线程全面解析涵盖了Java编程中关于线程的重要概念和实践技巧。在Java中,多线程是并发编程的基础,允许程序同时执行多个任务,提高系统资源利用率和应用程序的响应速度。 线程的生命周期包括五个基本...

    java核心编程之javathread

    Java线程(JavaThread)是Java程序中执行的独立单元,它是Java多线程编程的基础。在Java中,每个应用程序至少有一个线程,通常被称为"主线程",用于执行程序的主要逻辑。Java线程允许程序同时执行多个任务,极大地...

    java thread浅解

    在深入探讨Java线程(Java Thread)的基本概念与创建方式之前,我们首先应当明确线程在计算机科学中的地位。线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可以...

Global site tag (gtag.js) - Google Analytics