今天因为一些原因,写了一下线程,
/**
*这个是线程类
*/
package threadTest;
import java.util.ArrayList;
import java.util.List;
public class MainThreadTest extends Thread {
private int index = 0;
//定于静态变量,可以全局操作,这样修改的list就会在线程中体现,
//发现只有static才可以其他的都不行,自己表示不是很理解,
//网上说全局变量就可以下,希望有谁可以指出下
private static List list = new ArrayList();
//定义是否退出循环的变量
private static boolean exit = true;
//单例类
private static MainThreadTest instance;
public static MainThreadTest getInstanc() {
if (instance == null) {
return new MainThreadTest();
} else {
return instance;
}
}
@Override
public void run() {
while (exit) {
if (list != null) {
for (String str : list) {
System.out.println(str + "---------------------" + index);
}
}
index++;
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//用来改变list
public void test(List list_t) {
list.addAll(list_t);
}
//开启线程
public void start_main() {
MainThreadTest.getInstanc().start();
}
//退出
public void exit_main() {
exit = false;
}
}
package threadTest;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 这个是测试类
* @author jueyue
*
*/
public class TestMain {
public static void main(String[] args) {
//开启线程
MainThreadTest.getInstanc().start_main();
Scanner input = new Scanner(System.in);
List list = new ArrayList();
boolean jueyue = true;
while(jueyue){
System.out.println("继续输入吧: ———");
String str = input.next();
list.add(str);
//把输入的东西添加到线程中去
MainThreadTest.getInstanc().test(list);
if(str.equals("jueyeu")){
jueyue = false;
//退出循环
MainThreadTest.getInstanc().exit_main();
}
list.clear();
}
System.out.println("测试结束了—————————————");
}
}
//以前虽然学过,但是基本上没有深入了解过,这次又学了下,不过还是没有很深的了解
分享到:
相关推荐
这个"初学线程资料包帮助文档"正是为了帮助大家系统地学习和掌握这些知识点。 线程是操作系统分配CPU执行时间的基本单元,一个进程可以包含多个线程,每个线程都在独立执行自己的任务。相比于进程,线程间的上下文...
本例中简单运用了线程间通信原理,简单明了,适合初学线程通信
通过这个多线程图像处理项目,初学者可以学习到如何在实际工程中结合Halcon的强大功能和C#的易用性,实现高效、并发的图像处理任务。随着经验的增长,你还可以探索更复杂的并发模型,如ThreadPool或Task并行库(TPL)...
### 多线程初学小练习 #### 背景介绍 在计算机科学领域中,多线程技术是实现程序并行处理的关键方法之一。它允许一个程序中的多个任务同时执行,极大地提高了程序的效率与响应速度。对于初学者而言,理解和掌握多...
对于初学者来说,理解和掌握QT中的多线程操作至关重要。 在QT中,多线程主要用于将耗时的操作(如大数据处理、网络通信、数据库操作等)与用户界面的更新分离开来,以避免阻塞UI,提高用户体验。QT提供了QThread类...
本DEMO针对初学者,旨在帮助理解如何在C#环境中进行多线程编程,并通过简洁的代码示例来突出关键点。 首先,我们需要了解.NET Framework提供的System.Threading命名空间,它是C#多线程编程的核心。在该命名空间中,...
本文将探讨C++多线程编程的基础,通过一个简单的实例帮助初学者理解其核心概念。 首先,我们要知道在C++11及其后续版本中,标准库提供了一个名为`<thread>`的头文件,它包含了创建和管理线程的接口。创建新线程的...
Java 线程初学者资料 Java 中的线程是一个复杂的主题,对初学者来说可能有些难以掌握。然而,理解 Java 线程是非常重要的,因为它可以帮助我们编写高效的程序。 Java 中的线程有两种实现方法,一种是实现 Runnable ...
本文将深入探讨VC多线程编程的基本概念、实现方式以及常见问题,帮助初学者理解并掌握这一技术。 一、多线程概念 多线程是指在一个应用程序中同时运行多个执行线程。每个线程都有自己的执行上下文,可以独立执行...
对于初学者来说,理解并掌握多线程的概念和使用是至关重要的。 首先,线程是程序执行的最小单位,它在操作系统内核的支持下运行。每个进程至少包含一个线程,即主线程,用于执行程序的起点。线程共享进程的内存空间...
初学Java多线程线程的生命周期.pdf
从提供的文件信息来看,这份文档主要是针对初学者介绍Java多线程的概念和基础知识。虽然文件内容部分文字因为扫描原因出现了识别错误和漏识别的问题,但是我们仍然可以从中提取出一些关键知识点。下面我将详细介绍...
在探讨Java多线程和线程生命周期时,我们首先应该明确,Java多线程是Java语言支持并发编程的一个重要特性,其允许同时...通过本主题的介绍,初学者可以对Java多线程有一个基础的认识,为以后深入学习并发编程打下基础。
本文将深入探讨“简单的线程代码编写”,帮助初学者理解线程的基本概念和如何在代码中实现。 线程是操作系统分配CPU时间片的基本单元,一个进程可以包含多个线程。它们共享同一块内存空间,但各自拥有独立的运行栈...
这篇“线程测试”针对初学者,旨在通过创建大量线程来探索系统的并发限制,并理解线程管理对系统性能的影响。 首先,我们需要了解C++中的线程库。自C++11标准起,C++引入了`<thread>`库,提供了一种原生的线程支持...
### Java线程初学者知识点详解 #### 一、线程基础概念 在计算机科学中,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。对于Java初学者而言,理解线程的基础概念至关...
《C#线程参考手册》是一本专为C#初学者设计的多线程编程指南。这本书深入浅出地介绍了C#中线程的概念、创建与管理,以及如何利用线程提升程序性能和效率。线程是现代软件开发中的重要组成部分,尤其是在多核处理器...
本资源包针对初学者提供了全面的多线程学习资料,旨在帮助你快速入门并解决实际开发中的问题。 首先,线程是操作系统分配CPU时间的基本单元,它允许程序同时执行多个任务。多线程编程能够提高程序的并发性和执行...