`
dannyhz
  • 浏览: 379166 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

线程等待join

 
阅读更多
package com.test.base.thread;

import junit.framework.Assert;

import org.junit.Test;

public class TestThread {
	
	@Test
	public void testJoinMethod(){
		Thread t1 = new Thread(new R1(100));
		Thread t2 = new Thread(new R1(1000));
		
		t1.start();
		t2.start();
		
		
		try {
			t1.join();
			t2.join();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println("Complete");
		while(true){
			;
		}
		
	}
	
	class R1 implements Runnable{
		
		int max_num = 100;
		
		public R1(int maxNum){
			max_num = maxNum;
		}
		
		public void run() {
			for(int i=0; i< max_num; i++){
				System.out.print((Thread.currentThread().getId()%2 == 1)? "$$" : "**" );
				System.out.println("[ Id = " + Thread.currentThread().getId() + " = " + i + "]") ;
			}
			
		}
		
	}
	
	
}


分享到:
评论

相关推荐

    C++ 等待线程结束

    在上面的例子中,`worker.join()`调用就是用来等待`worker`线程结束的关键。`join()`函数会阻塞调用线程(这里是主线程)直到被join的线程(`worker`线程)执行完毕。这意味着主线程会暂停执行,直到`workerFunction...

    Python语言基础:线程等待.pptx

    为了避免线程这种复杂的执行方式,让程序顺序输出,需要在启动线程后调用“join()”方法使线程等待。 线程等待 线程等待,具体实现: import threading import time def thread1_job(): print('T1 start\n') time....

    多线程面试专题及答案

    2. Thread.join():加入到当前线程,使得当前线程等待join线程结束后再继续执行。 3. Condition接口:配合Lock使用,提供更灵活的线程通信方式。 五、并发工具类 1. ExecutorService和ThreadPoolExecutor:管理...

    Java线程之join_动力节点Java学院整理

    join() 定义在Thread.java中。 join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解

    【IT十八掌徐培成】Java基础第08天-02.多线程-join-daemon-同步.zip

    `Semaphore`信号量控制对有限资源的访问,`CountDownLatch`计数器用于等待一组线程完成操作,`CyclicBarrier`循环栅栏允许一组线程等待彼此到达某个点后再继续执行,而`Phaser`是Java 7引入的更高级的同步工具。...

    线程创建,线程等待与清除,thread_clean.c,thread_create.c,thread_create.c,thread_exit_struct.c,thread_id.c,thread_int.c, thread_join.c, thread_join.c, thread_string.c, thread_struct.c

    线程等待通常指的是一个线程(父线程)等待另一个线程(子线程)完成其工作,这通常通过`pthread_join()`函数实现,如`thread_join.c`所示。`pthread_join()`让调用线程阻塞,直到指定的线程结束。线程清除,或线程...

    浅谈java线程join方法使用方法

    在Java中,线程join方法的作用是使当前线程等待另一个线程的结束,然后再继续执行当前线程的任务。 在Java中,线程join方法可以通过两种方式来实现,一种是使用Thread类的join方法,另一种是使用Thread类的wait和...

    Java简单实现“主线程等待所有子线程完成再继续”

    `CyclicBarrier`则允许一组线程等待其他线程到达一个公共屏障点,而`Semaphore`则可以用来控制同时访问特定资源的线程数量。 总的来说,Java提供了丰富的多线程同步机制,可以根据实际需求选择合适的方法来实现...

    对python 多线程中的守护线程与join的用法详解

    `thread.join()`方法用于等待指定线程结束。在主程序中调用`join()`方法后,主线程会阻塞,直到调用`join()`的线程执行完毕。这样可以确保主线程不会在子线程完成之前结束。如果不使用`join()`,子线程可能会在主线...

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法、yield()方法、join方法、interrupt()方法

    线程的合并是指一个线程等待另一个线程执行完毕后再继续执行。在Java中,可以使用Thread类的join()方法实现线程的合并。 线程的中断是指在一个线程中断另一个线程的执行。在Java中,可以使用Thread类的interrupt()...

    Java线程中yield与join方法的区别Java开发J

    `join`方法的作用是等待指定线程执行完毕后再继续执行当前线程。它可以确保当前线程在调用`join`的线程执行完其所有任务后才继续执行,从而实现线程间的同步。`join`方法有一个可选的时间参数,可以设置等待的最长...

    线程及线程应用总结

    - `join()`方法:让当前线程等待指定线程结束后再继续执行。 3. **线程状态** - 新建(New):线程被创建但尚未启动。 - 运行(Runnable):线程已启动,等待CPU时间片。 - 阻塞(Blocked):线程被阻塞,如...

    c# 多线程(轮询,等待,回调)操作实例

    - `Thread.Join()`方法用于等待指定线程结束,主程序会阻塞直到该线程完成。 - `Monitor.Wait()`和`Monitor.Pulse()`配合使用可以实现线程间的同步和等待,适用于复杂的同步场景。 - C# 4.0引入了`async/await`...

    线程中创建子线程

    // 等待子线程完成 } } int main() { std::thread newThread(createSubThreads, 5); // 创建新线程,创建5个子线程 newThread.join(); // 等待新线程完成 return 0; } ``` 在这个例子中,`main`函数创建了一个...

    java多线程经典案例

    阻塞状态通常发生在线程等待I/O操作完成、调用sleep()方法、等待锁释放或者调用join()方法等待其他线程结束时。 在`threadTest`这个案例中,我们可能会看到如何使用这些概念来创建实际的应用场景。例如,一个典型的...

    LINUX线程函数大全.pdf

    LINUX 线程函数大全是一个详细的线程函数手册,涵盖了线程创建、线程属性、线程结束、线程等待、线程分离、线程数据等多方面的知识点。本手册将详细讲解每个线程函数的使用方法、参数设置、返回值等信息,从而帮助...

    java多线程Demo

    一个线程调用另一个线程的join()方法,会等待该线程执行完毕后再继续执行,可以用来控制线程的执行顺序。 8. Volatile关键字: Volatile关键字可以保证线程间变量的可见性,但不能保证原子性。在多线程环境下,...

    vc中获取一个线程的状态及返回值

    - 使用`std::thread`,线程创建和状态查询可以变得更加简洁,例如`std::thread::join()`用于等待线程结束,`std::thread::joinable()`检查线程是否可以被等待。 7. **界面交互**: - 在GUI应用程序中,如VS2012...

    多线程测试(是多线程的测试,对学习多线程的朋友有用)

    `Join`方法则是让主线程等待指定线程的完成。 多线程编程中还需要关注线程同步和互斥问题,以防止竞态条件和数据不一致性。`Mutex`, `Semaphore`, `Monitor`, `lock`关键字等都是C#提供的同步机制。例如,使用`lock...

    多线程例子 演示多线程使用

    5. **线程通信**:`std::condition_variable`允许线程等待特定条件满足后再继续执行。当条件满足时,可以通知其他线程。这对于实现生产者-消费者模型或等待某些事件发生非常有用。 6. **线程生命周期**:线程创建后...

Global site tag (gtag.js) - Google Analytics