1,联合线程实际上就是把多线程又联合成了一个线程,但这里还是要比单线程灵活很多,比如说,我可以让一个线程到运行到某一个条件再联合其他线程。当前线程与其他线程联合在一起,又一种让出cpu,而且直到别个线程运行完,当然,这里join()还可以传入时间以控制联合的时间。
a,直接联合:
public class ThreadDemo {
public static void main(String[] args) {
Thread t = new TestThread();
// t.setDaemon(true);
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
while(true) {
System.out.println("main(): "+Thread.currentThread().getName() + " is running");
}
}
}
class TestThread extends Thread {
public void run() {
while(true) {
System.out.println("TestThread: "+Thread.currentThread().getName() + " is running");
}
}
}
这种直接联合,2个线程就完全成了一个线程了。
b,条件联合:
public class ThreadDemo {
public static void main(String[] args) {
Thread t = new TestThread();
// t.setDaemon(true);
t.start();
int i=0;
while(true) {
System.out.println("main(): "+Thread.currentThread().getName() + " is running");
if(i++ ==10000) {
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
class TestThread extends Thread {
public void run() {
while(true) {
System.out.println("TestThread: "+Thread.currentThread().getName() + " is running");
}
}
}
这里当main线程中工作10000下后,把线程TestThread 联合进来,实际上就是main线程运行10000下后,一直等到TestThread 完成后,再运行。
这里说个题外话,在试验这种死循环的java程序时最好在命令行窗口中试验(cmd中),因为那里ctrl+c中断非常地方便,现在我都是有eclipse,在eclipse中运行时常运行死了,因为图形界面的东东,本来就需要线程去刷新图形界面去,如果程序引入了一个死循环进去,eclipse就没有能力捕捉到你所按得Terminate键了。同时,在eclipse中写的java程序,找到生成的class文件,直接运行也是一个不错的选择,但要注意不要忘了下上完整的包名。如我一开始就遇到了这个问题:ThreadDemo放在了fsf的包下面,然后到cmd切换到fsf目录下运行java ThreadDemo结果总是报错“Exception in thread "main" java.lang.NoClassDefFoundError: ThreadDemo (wrong name: fsf/ThreadDemo)”。一开始以为是classpath没有设好,结果把fsf的完整路径设到classpath中去,还是报同样错误。后来才发现,要到fsf上一层目录运行“java fsf/ThreadDemo”。
c,联合10秒和分开;
public class ThreadDemo {
public static void main(String[] args) {
Thread t = new TestThread();
// t.setDaemon(true);
t.start();
int i=0;
while(true) {
System.out.println("main(): "+Thread.currentThread().getName() + " is running");
if(i++ ==10000) {
try {
t.join(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
class TestThread extends Thread {
public void run() {
while(true) {
System.out.println("TestThread: "+Thread.currentThread().getName() + " is running");
}
}
}
这里当main线程运行10000下后,与TestThread 联合10秒,其实就是让TestThread 运行10秒,然后在分别运行。
分享到:
相关推荐
Java 多线程例子 Java 多线程是 Java 编程语言中的一种基本概念,它允许程序同时执行多个任务,从而提高程序的性能和效率。本文将通过三个实用的例子,讲解 Java 多线程的基本概念和使用方法。 第一个例子:创建多...
### Java多线程小例子详解 #### 知识点一:基本多线程示例 在给定的代码示例中,我们首先看到的是一个简单的Java多线程应用实例。这个例子展示了如何创建并启动一个新的线程。在`ThreadDemo`类的`main`方法中,...
在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应...文档“java多线程实例.docx”可能包含具体的示例代码和详细解释,建议参考学习,以加深对Java多线程的理解。
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提升了程序的效率和性能。在Java中,实现多线程有两种主要方式:通过实现Runnable接口或者继承Thread类。本案例将深入探讨Java多线程中的关键...
总之,Java多线程和异步调用是构建高效、响应迅速的应用程序的关键技术。通过合理利用这些工具和机制,开发者可以编写出能够充分利用多核处理器优势的代码,从而提高软件性能。在实际应用中,理解并熟练掌握这些概念...
Java多线程编程是Java开发中的重要组成部分,用于实现程序的并发执行,提高资源利用率和程序响应速度。本文将深入探讨Java多线程的创建、启动以及相关的方法。 首先,Java提供两种创建线程的方式:继承`Thread`类和...
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在Java中,实现多线程有两种主要方式:通过继承`Thread`类和实现`Runnable`接口。 1. 继承Thread类: 当你需要创建一...
标题和描述中并未直接提供关于Java多线程的具体例子,但是从给定的【部分内容】中我们可以提取和概括出多个关于Java多线程编程的知识点。 1. Java多线程基础概念: Java多线程是Java语言支持并发编程的一个重要...
总的来说,Java多线程编程涉及线程的创建、同步、通信和管理,理解并熟练掌握这些知识点对于编写高效、安全的并发代码至关重要。在实际应用中,需要根据具体需求选择合适的线程模型和同步策略,以优化性能和避免并发...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提升程序的效率和响应性。本文将详细解析Java中实现多线程的两种主要方式,并讨论线程的基本概念和内存模型。 首先,理解多线程的概念至关...
本压缩包,总共包含两个文档,JAVA多线程编程详解-详细操作例子和 Java多线 程编程总结 例如,runnable、thread、stop()、 suspend、yield、setPriority()、getPriority()、synchronized、wait()、join、线程池同步...
Java多线程技术在爬虫应用中的重要性不言而喻,它能显著提升图片抓取的效率。本文将深入探讨如何使用Java实现多线程爬虫,以及压缩包中的三个示例案例。 首先,我们需要了解Java中的多线程概念。在Java中,通过创建...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提升系统效率。在Java中,多线程可以通过两种主要方式实现:继承`Thread`类和实现`Runnable`接口。 **继承Thread类**: 当你创建一个新的...
在Java编程中,多线程的使用是实现程序并发运行的重要手段。本文将总结五个关键的线程控制方法:wait()、await()、sleep()、yield()和join()。这些方法各自有独特的用途和不同的工作机制。 一、wait()、notify()、...
总的来说,Java多线程操作提供了丰富的控制手段,帮助开发者实现高效的并发编程。通过熟练掌握这些方法,可以更好地管理和协调多个执行流程,提高程序的性能和用户体验。在实际开发中,应根据具体需求灵活运用这些...
Java 多线程实例 Java 多线程是Java编程语言的一个重要特性,它使得程序能够在同一时间执行多个任务,从而提高系统效率和资源利用率。本文将深入探讨Java中的线程概念、创建线程的方式以及如何实现线程的并发执行。...
本资源“java线程例子大全”包含了十八个单元的实例代码,覆盖了Java线程操作的多个方面。 1. **线程创建** - 继承`Thread`类:创建一个新的类,该类继承自`Thread`,然后重写`run()`方法。实例化后调用`start()`...