`

多线程1

 
阅读更多

 1 Java程序运行原理
java 命令会启动 java 虚拟机,启动 JVM,等于启动了一个应用程序,也就是启动了一个进程。该进程会自动启动一个 “主线程” ,然后主线程去调用某个类的 main 方法。所以 main方法运行在主线程中。在此之前的所有程序都是单线程的。
  2 jvm 是多线程的

  JVM启动至少启动了垃圾回收线程和主线程,所以是多线程的。

  3 线程中断

  首先我创建一个线程,然后重写run方法,然后让该线程休眠10S钟

 

  public class ThreadStop extends Thread {
    @Override
    public void run() {
        System.out.println("开始执行:" + new Date());
             try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            // e.printStackTrace();
            System.out.println("线程被终止了");
        }

        System.out.println("结束执行:" + new Date());
    }
}

 然后我在测试类中,当线程睡眠了3S种,直接停止线程

 

 

public class ThreadStopDemo {
	public static void main(String[] args) {
		ThreadStop ts = new ThreadStop();
		ts.start();

		// 你超过三秒不醒过来,我就干死你
		try {
			Thread.sleep(3000);
			// ts.stop();
			ts.interrupt();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

 4  线程的生命周期

 

 首先,我们创建了一个线程,调用该线程对象的start方法,此时线程的状态是就绪状态,首先说一下cpu,cpu在同一个时间段,只能运行一个线程,所以当这个线程A抢到了cup的执行权,那么它由就绪状态转别成运行状态,如果线程A运行完了,那么线程A结束,变成死亡状态,如果线程A没有运行完,但是这个时候线程B抢到了CUP的执行权,那么线程A从运行状态转变成就绪状态,如果线程A在运行的时候,被调用了等待,或者睡眠的方法,那么这个时候,线程状态编程阻塞状态,然后当过了休息的时间段之后,成为就绪状态,重新抢夺cpu的执行权。

 

 

 

 

 

 

 

 

 

  

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

相关推荐

    多线程面试相关知识点

    多线程 1. 什么是线程: 线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。 2. 什么是多线程: 多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务. 说明: 线程是程序内...

    狂神说多线程详解.rar

    《狂神说多线程详解》是一份深入探讨多线程技术的资源包,其中包含了对多线程编程的详尽解析。多线程是现代计算机编程中的一个重要概念,尤其在处理高性能计算、并发操作以及实时系统时,多线程技术显得尤为重要。它...

    delphi 多线程调试demo

    1. **Synchronize方法**:用于在多线程环境中安全地访问主线程中的控件或数据。调用Synchronize方法会将指定的代码放入主线程的消息队列,待主线程有机会时执行。 2. **TEvent对象**:可以用来在多个线程之间同步...

    linux多定时器多线程

    1. **任务调度**:通过多线程,每个线程可以绑定一个定时器,执行不同周期或间隔的任务。例如,一个线程负责定期检查网络连接,另一个线程负责定期备份数据。 2. **并行处理**:多个定时器可以在不同的线程中并发...

    我总结的Java多线程程序设计

    1. **死锁**:两个或更多线程相互等待对方释放资源,导致所有线程都无法继续执行。避免死锁需要遵循一些原则,如避免循环等待、资源有序分配等。 2. **活锁**:线程不断尝试获取资源,但一直失败,导致线程无限期地...

    大漠多线程模板_大漠_大漠多线程_

    "大漠多线程模板"是一个专门针对C#开发的多线程处理框架,它为开发者提供了便捷的方式来管理和优化多线程应用。这个框架由知名开发者"大漠"创建,旨在简化复杂的并发编程,提高代码的可读性和可维护性。 多线程允许...

    多线程编程示例

    在IT领域,多线程编程是一项关键技能,尤其是在性能优化和并发处理方面。本文将深入探讨多线程编程的基础知识,以帮助初学者快速入门。 首先,我们需要理解什么是多线程。多线程是指在一个进程中同时执行多个独立的...

    C#多线程互斥实例 多线程获取同一变量

    在编程领域,多线程是实现并发执行任务的重要机制,特别是在现代计算机系统中,多核处理器使得多线程成为提高程序性能的关键手段。C#语言提供了丰富的多线程支持,让我们能够编写出高效的多线程应用程序。在这个"多...

    pb9多线程控件,能够真实实现多线程

    1. PowerBuilder 9.0的多线程实现:PB9不直接支持多线程,但可以通过第三方控件或自定义编程实现。 2. Ttimer.ocx控件:这是一个可能用于多线程环境的ActiveX定时器控件,可以触发并发操作。 3. 多线程的优势:多...

    易语言多线程传递多参数

    在编程领域,多线程是实现并发执行任务的重要机制,特别是在易语言中,它能有效提升程序的执行效率。易语言是一种中文编程语言,旨在降低编程门槛,让普通用户也能进行程序开发。本文将深入探讨易语言中的多线程以及...

    多线程_按键精灵经典多线程操作_

    在IT行业中,多线程是一种常见的编程技术,它允许程序同时执行多个独立的任务,从而提高计算机系统的效率和响应性。特别是在自动化工具如“按键精灵”中,多线程的应用能够显著提升其性能和实用性。 标题“多线程_...

    多线程的运用e语言多线程 e多线程

    1. 提高系统吞吐量:多线程使得CPU资源得以充分利用,提高程序整体执行效率。 2. 响应性:在进行耗时操作时,主线程不会被阻塞,保持用户界面的响应性。 3. 资源复用:多线程共享进程资源,减少内存开销。 缺点: 1...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例),可直接运行

    在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代多核处理器的优势,实现并行处理和高效能编程。本资源包含六个C#.NET多线程的实例,涵盖了多线程的基本使用到更高级的概念,如线程互斥。...

    PB多线程实现

    1. **线程安全**:确保共享数据在多线程环境下正确访问,通常需要使用锁(如Monitor或Mutex)、信号量(Semaphore)或原子操作来实现。 2. **线程间通信**:线程间的同步和通信至关重要,可以使用事件(Event)、...

    多线程框架通用多线程源码.zip

    《深入理解易语言版多线程通用框架》 在计算机编程中,多线程是一种并发执行任务的技术,它允许多个任务在同一时间内运行,从而提高了系统资源的利用率和程序的响应速度。尤其在易语言这样的高级编程环境中,多线程...

    鱼刺多线程注册源码例子(鱼刺多线程稳定框架)

    "鱼刺多线程注册源码例子"是一个基于"鱼刺多线程稳定框架"的编程实践,旨在展示如何在软件开发中有效地利用多线程技术来提高程序的执行效率和稳定性。在这个例子中,"鱼刺框架"可能是一个专门为多线程编程设计的开源...

    12.1 Qt5多线程:多线程及简单实例

    在编程领域,尤其是在开发高效、响应迅速的应用程序时,多线程技术扮演着至关重要的角色。Qt5框架提供了一种方便的方式来实现多线程,它允许开发者在不同的线程中执行任务,从而避免主线程(GUI线程)因处理耗时操作...

    C# 多线程实例多线程实例多线程实例

    在编程领域,多线程是实现并发执行任务的关键技术,特别是在C#这样的语言中,它提供了丰富的多线程支持。本文将深入探讨C#中的多线程实例,以帮助开发者理解如何有效地利用多核处理器资源,提高程序的执行效率。 多...

    Qt 多线程及简单实例 demo

    1.多线程的执行顺序无法保证,与操作系统的调度策略和线程优先级等因素有关。 2.多线程的切换可能发生在任何时刻、任何地点。 3.多线程对代码的敏感度高,因此对代码的细微修改都可能产生意想不到的效果。 先由一...

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...

Global site tag (gtag.js) - Google Analytics