指在一线程里面调用另一线程join方法时,表示将本线程阻塞直至另一线程终止时再执行
写了个简单的代码
public class TestJoin{
public static void main(String[] args){
Thread2 t2 = new Thread2();
Thread1 t1 = new Thread1(t2);
t1.start();
t2.start();
}
}
class Thread1 extends Thread{
private Thread2 t2;
Thread1(Thread2 t2){
this.t2 = t2;
}
/* (non-Javadoc)
* @see java.lang.Thread#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
try {
t2.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i = 0; i<5; i++){
System.out.println("yi1:"+i);
}
}
}
class Thread2 extends Thread{
/* (non-Javadoc)
* @see java.lang.Thread#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
for(int i = 0; i<5; i++){
System.out.println("er2:"+i);
}
}
}
运行结果:
er2:0
er2:1
er2:2
er2:3
er2:4
yi1:0
yi1:1
yi1:2
yi1:3
yi1:4
分享到:
相关推荐
`Thread`类代表程序中的一个执行线程,提供了创建、控制和管理线程的方法,如`start()`(启动线程)、`sleep()`(使线程暂停一段时间)和`join()`(等待当前线程结束)。 7. **Character类**:提供了一些处理单个...
在Java中,线程是通过`java.lang.Thread`类或者实现`Runnable`接口来创建和管理的。这个资料包包含的是关于Java线程的中英文参考资料,包括书籍和源代码。 "Java.Threads,3rd.Edition.chm"可能是一个关于Java线程的...
- **通过`Runnable`接口创建**:实现`Runnable`接口,定义`run()`方法,然后将`Runnable`对象作为参数传递给`Thread`类的构造函数,创建`Thread`对象并调用`start()`方法。 2. **线程状态** - 新建(New):线程...
4. **多线程编程**:`java.lang.Thread`和`java.util.concurrent`包提供了多线程编程的支持。Java 1.7引入了Fork/Join框架,这是一种用于高效执行大量任务的并行计算模型。 5. **IO与NIO**:`java.io`包提供了传统...
4. **多线程**:`java.lang.Thread`和`java.util.concurrent`包提供了多线程编程的支持,`java.util.concurrent`在JDK 7中进一步完善,增加了并发工具类,如`ExecutorService`和`Future`。 5. **异常处理**:`java....
Java提供了`java.lang.Thread.dumpStack()`帮助诊断死锁,而`java.util.concurrent.locks`包中的`ReentrantLock`和`Condition`可以更精细地控制锁和条件,降低死锁的风险。 此外,`java.util.concurrent`包中的`...
1. **扩展** `java.lang.Thread` **类**:创建一个新的线程类,继承自Thread,并重写run()方法。run()方法包含线程要执行的任务。例如: ```java public class MyThread extends Thread { public void run() { //...
以上只是部分Java线程编程的核心知识点,`javathread.part104.rar`中可能还会包含更多高级主题,如线程池的配置与优化、线程通信(例如`join()`, `Thread.sleep()`, `yield()`)以及并发工具类的深入探讨。...
除了直接使用`ThreadMXBean`,我们还可以使用`Thread`类的静态方法`getAllStackTraces()`获取所有线程的堆栈跟踪映射,这对于定位线程问题也很有帮助。 此外,`jstack`工具是Java开发工具集(JDK)的一部分,它能以...
首先,Java中的线程是通过`java.lang.Thread`类来表示的,这个类继承自`java.lang.Object`并实现了`Runnable`接口。`Runnable`接口只有一个抽象方法`run()`,它是线程执行的主要逻辑。创建线程主要有两种方式:一是...
Java多线程编程还涉及到线程同步、线程通信、线程状态管理等多个复杂主题,如synchronized关键字、wait()和notify()方法、Thread.join()、Thread.sleep()、线程池等。理解并熟练掌握这些知识点对于编写高效、稳定的...
4. Java.lang.Thread类:Thread 类定义了 8 个常用的构造方法,包括无参数的构造方法和带有线程名的构造方法。Thread 类也实现了 Runnable 接口,但该类有更丰富的方法,如 start () 方法、 run () 方法和 join ()、...
4. **多线程**:Java 7提供了更强大的多线程支持,`java.lang.Thread`类和`java.util.concurrent`包中的`ExecutorService`、`Future`、`Callable`等接口,使得并发编程更加灵活高效。 5. **NIO.2**:Java 7引入了非...
- **`java.lang.Thread`类**:表示程序中的一个执行线程,提供了线程控制的相关方法,如`start()`、`sleep()`、`join()`等。 - **`java.util.concurrent`包**:提供了线程池、同步工具类(如`Semaphore`、`...
Java中的线程使用主要涉及到java.lang.Thread类和java.lang.Runnable接口。 Thread类是实现线程的直接方式,它实现了Runnable接口。开发者可以通过继承Thread类并重写其run方法来定义线程要执行的任务。一旦创建...
- **实现 `java.lang.Runnable` 接口**:创建实现了 `Runnable` 接口的对象,并通过 `Thread` 构造方法将其传入,启动该线程将调用对象的 `run()` 方法。 2. **实例化线程** - **扩展 `java.lang.Thread` 类**:...
Java提供了多种线程管理方法,例如`sleep()`方法使得线程暂停执行指定的毫秒数,`yield()`方法使得当前线程让出CPU给其他线程执行,`join()`方法使得主线程等待子线程执行完成。 在Java中,线程的优先级可通过`set...
`join()`方法定义在`java.lang.Thread`类中,其主要功能是使调用该方法的线程(这里称为调用线程)暂停执行,直到目标线程(即`join()`方法所在的线程)执行完毕。这样,可以确保调用线程在目标线程执行完成后才...
- **继承Thread类**: 可以通过继承`java.lang.Thread`类来定义线程,并重写其中的`run()`方法。需要注意的是,`run()`方法并不是自动调用的,而是通过调用`start()`方法间接调用。 - **实现Runnable接口**: 也可以...
`java.lang.Thread`类和`java.util.concurrent`包提供了丰富的线程操作接口,如`start()`启动线程,`join()`等待线程结束,以及线程池(ThreadPoolExecutor)用于更高效地管理大量并发线程。 Java的并发库还包含锁...