`

java中线程的使用,暂停和停止

 
阅读更多

    进程就是一个正在进行中的程序,由操作系统分配一个内存空间,不同的进程之间不能直接实现数据的共享。

    而在一个进程中,还可以同时进行多件事情,这每一件事情便是一个线程。

    在JAVA中,Thread便是线程类,它的使用分以下几个步骤:

    首先,创建一个类让他继承Thread,那么这个类便是一个线程类,也就是这个类的对象可以用来同时干多件事情。

    然后,在这个线程类中重写父类Thread的run()方法,也就是在run里面写上这个线程是干什么的,启动之后该自动完成那些任务。

    最后当需要使用线程时,就创建这个线程的对象,由于线程的run()方法是不能直接调用的,所以让对象调用线程的start()方法,这时线程便会在此程序的进程内存中被分配一个内存空间,来自动执行线程的run()方法。

    对于怎么让线程停止和暂停,java中原本提供了一些方法,不过现在都不能用了,所以我们采用的是在线程的run()方法中做一些处理来达到线程停止和暂停的效果。

    线程的停止:

    首先明白,当线程的run()方法结束,那么这个线程也就结束了,所以一般的线程在run()方法中都会设有一个死循环while(true){};这样就可以让线程的run()方法一直执行不完,线程便一直在进行,所以要让线程停止,便需要将这个死循环结束,所以一开始在while的条件里面不应该直接写true,而是写一个boolean变量,这样我们就可以通过控制这个变量的值,来控制线程的结束了。

    线程的暂停:

    暂停也是将线程停下来,但是暂停之后还需要能够继续,如果继续照上面让线程停止的方法的话,run()方法结束这个线程也就没了,再将boolean改回来也不会继续执行了,所以我们采用的是不结束掉线程的run()方法,也就是说死循环继续执行,而我们要线程做的事不直接写在死循环里面,而是用一个if()语句扩起来,在if语句的条件中设置一个控制暂停的boolean变量,也就是说,如果暂停了,那么if语句便不执行,那么线程设定的操作也就不执行,线程便看起来暂停了,然而实际上,线程的run()方法还没听,死循环一直在进行,只是没有做事而已,这样的话,当我们想要继续的时候,只要将if的条件变量改为true,那么循环中又开始执行if语句中的操作,那么线程就又开始做事了。通过这样的控制也就达到了暂停继续的效果。

 

  • 大小: 12 KB
分享到:
评论

相关推荐

    Java多线程编程线程的协同、停止、暂停、继续等操作实现

    现代的Java编程中,可以使用`Thread.yield()`让当前线程暂停执行,把CPU时间片让给其他线程,但这并不保证线程会真正暂停。若想实现类似暂停和恢复的功能,可以采用类似停止线程的方法,使用标志变量配合循环检查。 ...

    JAVA线程停止的方法

    本文将深入探讨Java线程停止的方法,特别是通过一个示例代码片段来解析如何利用标志变量(Flag)控制线程的生命周期,以及这种方法背后的原理与最佳实践。 ### Java线程停止方法概述 在Java中,直接调用线程的`...

    Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet

    5. **线程状态**:Java线程有五种基本状态:新建、可运行、运行、阻塞和死亡。线程的状态转换反映了其生命周期的不同阶段。 6. **线程同步**:为了避免线程间的冲突,Java提供了多种同步机制,如`synchronized`...

    Java 多线程介绍

    `Thread`类提供了一系列用于线程控制的方法,包括`suspend()`和`resume()`,尽管这些方法已被标记为已废弃,并不推荐在现代Java程序中使用。 ### `suspend()`与`resume()`方法 `suspend()`方法用于暂时停止一个...

    java多线程学习

    Thread类中的sleep()方法可以使当前线程暂停执行指定的毫秒数。 了解了创建线程的两种基本方式之后,还要注意到继承Thread类和实现Runnable接口之间的区别。继承Thread类的方式因为子类会继承父类的所有属性和方法...

    java多线程编程实例_Source

    实例可能涉及线程的启动、暂停、恢复和停止操作。 三、线程池 Java的ExecutorService和ThreadPoolExecutor提供线程池管理,能有效控制并发量,防止过多线程导致资源浪费。实例会展示如何创建线程池,调整线程池参数...

    Java多线程管理示例

    Java多线程是Java编程中的一个关键特性,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程可以通过实现Runnable接口或继承Thread类来创建。下面我们将深入探讨Java多线程的核心概念、...

    Java线程.ppt

    Java线程是Java编程中的重要概念,特别是在多核处理器和并发处理中不可或缺。Java线程允许程序在同一时间执行多个不同的任务,从而提高了程序的效率和响应性。在燕山大学信息学院计算机系的课程中,李峰教授讲解了...

    Java多线程编程模板

    4. wait(), notify(), notifyAll()方法:在synchronized代码块或方法中使用,用于线程间通信。 五、线程池 Java Executor框架提供了线程池管理,通过ExecutorService接口和ThreadPoolExecutor类实现。线程池可以...

    java多线程下载器

    在Java中实现多线程下载主要涉及以下几个核心概念和技术: 1. **线程(Thread)**:Java中的`Thread`类是进行多线程操作的基础。每个线程负责下载文件的一部分。创建一个新的线程对象并调用其`start()`方法可以启动...

    Java多线程编程实例

    线程的生命周期包括新建、就绪、运行、阻塞和终止五个阶段,开发者需要适时地启动、暂停、恢复或停止线程。 总的来说,“Java多线程编程实例”这本书涵盖了Java多线程编程的各个方面,从基础概念到高级用法,包括...

    java多线程下载图片

    在这个场景中,"java多线程下载图片"意味着我们将探讨如何使用Java来实现一个能够异步下载多个图片的系统。 首先,我们需要理解Java中的线程是如何创建和运行的。Java提供了两种创建线程的方式:继承Thread类和实现...

    JAVA线程学习(源代码)

    本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...

    java 多线程.ppt,多线程

    Java线程有五种基本状态:新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)和终止(TERMINATED)。线程从新建到终止会经历这些状态的转换。 4. 线程同步与互斥: 为了避免多线程环境下资源...

    java多线程的两种实现

    - `wait()`, `notify()`和`notifyAll()`是Object类的方法,用于线程间的通信和协作,通常在`synchronized`代码块中使用。 5. **线程优先级** Java线程有10个优先级,`Thread.MIN_PRIORITY` (1)到`Thread.MAX_...

    java线程深入解析

    Java线程是Java编程语言中的核心概念,尤其在多任务处理和并发编程中扮演着重要角色。线程允许一个程序内部同时执行多个独立的控制流,使得程序能够更高效地利用处理器资源。本文将深入解析Java线程的相关知识点,...

    java多线程作业.docx

    - 使用`Thread.sleep()`方法实现线程暂停。 3. **Letter.java**: - 作为共享资源,用于存储当前要显示的字母。 - 提供了`setChar()`和`getChar()`方法用于设置和获取当前字母。 4. **InuptLetterThread.java**...

    java多线程测试实例

    - `ExecutorService`和`ThreadPoolExecutor`是Java并发库中的线程池工具,它们能有效管理线程生命周期,提高系统效率,避免大量线程创建销毁带来的开销。 8. **死锁(Deadlock)** - 当两个或更多线程互相等待...

    java多线程编程实例

    - `sleep(long millis)`方法使当前正在执行的线程暂停执行指定的毫秒数,之后线程将进入可运行状态等待被调度。 - `join()`方法用于等待一个线程的结束,只有当该线程执行完毕后,当前线程才能继续执行。 - `yield()...

    关于线程的动态停止,一个很经典的多线程麦票程序

    - Java不直接提供安全的线程停止机制,因为直接终止线程可能引发数据不一致性和资源泄露。通常推荐使用共享标志或中断来停止线程。 - 共享标志:线程在循环中检查一个共享变量(如`isRunning`),当外部设置这个...

Global site tag (gtag.js) - Google Analytics