import java.util.Scanner;
public class Test {
private T t = new T();
/**
* @param args
*/
public static void main(String[] args) {
final Test test = new Test();
final Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入:1.启动 2.暂停 3.继续 4.重启 5.停止 6.退出程序");
final int command = scanner.nextInt();
if (command > 0 && command < 6) {
test.command(command);
} else {
break;
}
}
}
public void command(int command) {
switch (command) {
case 1:
new Thread(t).start();
new Thread(t).start();
break;
case 2:
t.setThreadCMD(ThreadCMD.RESUME);
break;
case 3:
t.setThreadCMD(ThreadCMD.CONTINUE);
break;
case 4:
t.setThreadCMD(ThreadCMD.STOP);
command(1);
case 5:
t.setThreadCMD(ThreadCMD.STOP);
break;
}
}
}
enum ThreadCMD {
START, RESUME, CONTINUE , STOP
}
class T implements Runnable {
private ThreadCMD threadCMD = ThreadCMD.START;
private final Object object = new Object();
private int count;
@Override
public void run() {
try {
while (true) {
synchronized (object) {
switch (threadCMD) {
case START:
case CONTINUE:
count++;
break;
case RESUME:
printInfo();
object.wait();
break;
case STOP:
printInfo();
return;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void printInfo(){
System.out.println(Thread.currentThread().getName() + " ThreadCMD=" + threadCMD
+ "--count=" + count);
}
public void setThreadCMD(ThreadCMD threadCMD) {
synchronized (object) {
this.threadCMD = threadCMD;
object.notifyAll();
}
}
}
分享到:
相关推荐
本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...
这份“java线程文档大全”包含了关于Java线程的广泛知识,以下是其中的一些关键点: 1. **线程概念**:线程是程序执行的最小单位,每个线程都有自己的程序计数器、寄存器和局部变量,共享同一块内存空间。在Java中...
本书《java线程与并发实践编程》由Jeff Friesen撰写,2017年2月出版,提供了关于Java线程API和并发工具的详细指南,帮助开发者深入理解和应用这些关键概念。 首先,Java线程是程序执行的独立路径,每个线程都有自己...
电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...
总的来说,回调在Java线程间通信中起到桥梁的作用,使得线程能够以非阻塞的方式互相协作,提高了程序的并发性能和响应速度。理解并熟练掌握回调以及其他线程通信机制是Java并发编程的关键,这对于开发高效、稳定的多...
这个资料包包含的是关于Java线程的中英文参考资料,包括书籍和源代码。 "Java.Threads,3rd.Edition.chm"可能是一个关于Java线程的第三版电子手册,通常这类资源会详细讲解线程的创建、生命周期、同步机制、线程池等...
以下是一些关于Java线程并发的关键知识点: 1. **线程调度与顺序控制**:线程的执行顺序可以通过`Thread.join()`方法来控制,如问题1所示,使得一个线程在另一个线程结束后再执行。 2. **Lock接口与同步代码块**:...
java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具...
本资源为一本关于Java线程的经典书籍,旨在帮助开发者深入理解和掌握Java多线程编程。 书中可能涵盖了以下几个关键知识点: 1. **线程创建**:Java提供了多种创建线程的方式,包括继承Thread类、实现Runnable接口...
根据提供的信息,我们可以推断出这份文档主要关注的是Java线程的相关内容。下面将围绕“Java线程”这一主题展开详细的介绍与解释。 ### Java线程基础 在Java语言中,线程是程序执行流的基本单元。一个标准的Java...
本专题涵盖了20多篇关于Java线程的精选技术文章,涉及了多个关键领域,如死锁、合并、休眠、优先级、阻塞等。以下是对这些主题的详细阐述: 1. **条件变量**: 条件变量是Java线程通信的一种机制,用于在特定条件...
标题为“Java线程资料.pdf”,说明该文档是一份关于Java编程语言中线程使用和管理方面的技术资料。由于文档内容涉及Java线程的关键知识点,我们可以从中提炼出以下几点关于Java线程的核心概念: 1. Java线程的创建...
它提供关于发现的线程转储的统计信息,提供关于锁定监视器和等待线程的信息。它可以在线程之间进行区分,以寻找相似之处,并具有“长运行线程”检测。如果记录了类的直方图,它还提供了线程转储中的堆对象的概述。
Java线程状态流转图知识点总结 Java线程状态流转图是一种用于描述Java线程生命周期中不同的状态和状态转换的图形表示方式。该图形展示了Java线程从创建到终止的整个生命周期,并详细介绍了每种状态的特点和转换...
Java线程是Java编程语言中的一个核心概念,它...以上就是关于Java线程的一些基础知识,包括线程的创建、状态管理、同步控制、异常处理以及高级特性。理解并掌握这些知识点对于编写高效、稳定的多线程Java程序至关重要。
Java线程有五种基本状态:新建(New)、可运行(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Terminated)。这些状态之间的转换是通过调用特定的方法,如start()、sleep()、join()、wait()、notify()等...
Java线程是并发编程的核心部分,它允许程序在同一时间执行多个独立的任务,从而提高系统效率和响应速度。本文将深入探讨Java线程的概念、生命周期、实现方式以及相关的同步机制。 首先,理解线程的基本概念至关重要...
以上就是关于Java线程的一些主要知识点。了解并熟练掌握这些内容,对于编写高效、稳定且并发安全的Java程序至关重要。在实际编程中,需要根据具体场景灵活运用这些技术,以实现最佳的并发性能。
这是一本关于Java线程的第二版教程,通过源代码的形式,帮助开发者学习如何在Java应用程序中有效地管理和控制线程。 Java线程允许程序同时执行多个任务,提升应用程序的效率和响应性。Java中的线程有两种主要创建...