`
ljyyanyan
  • 浏览: 6042 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

第九章 多线程

 
阅读更多

 

 

 

第九章   多线程

一、进程与线程:

                 ①进程:程序的一次动态执行过程

                 ②线程:程序的运行流程,是进程的进一步划分

                 ③多线程:并发机制的一种有效手段,可以同时运行对个

                                   程序块

 

二、Java中线程的实现:

                 ①继承Thread类:

                            1、定义格式:   class 类名称 extends Thread{

       属性;

       方法;

       public void run(){

       线程主体;

}

}

                            2、启动线程:   start方法(不能直接调用run方法)

                                                        例:MyThread mt = new MyThread(“线程”)

                                                                             mt.start();

                            3、注意事项:start方法只能调用一次,否则会抛出

                                  IllegalThreadStateException”异常

                 ②实现Runnable接口(更优):

                            1、定义格式:   class 类名称 implements Runnable{

       属性;

       方法;

       public void run(){

       线程主体;

}

}

                            2、启动线程:   Thread类中的start方法

                                                        例:MyThread mt = new MyThread(“线程”)

                                                                             Thread t = new Thread(mt)

                                                                             t.start();

 

                            3、注意事项:Thread类中提供了public Thread

                                  (Runnable target)public Thread(Runnable

                                  targetString name)两个构造方法接收Runnable

                                  的子类实例对象

                 Thread类和Runnable接口:

                            1Thread类也是Runnable接口的子类

                            2、实现Runnable接口适合多个相同程序代码的线

                                  程去处理同一资源的情况

                            3、实现Runnable接口可以避免由于Java单继承特

                                  性带来的局限

                            4、实现Runnable接口增强了程序的健壮性,代码

                                  能够被多个线程共享,代码与数据是独立的

 

 

三、线程的状态:

                 ①创建状态:Thread类的构造方法;处于不可运行状态

                 ②就绪状态:start方法;处于排队等待状态

                 ③运行状态:自动调用run方法;就绪状态的线程被调用

                                       并获得处理器资源

                 ④堵塞状态:sleep方法、suspend方法、wait方法;人为

                                       挂起或需要执行耗时的输入输出操作时,堵

                                       塞消除后,可转入就绪状态

                 ⑤死亡状态:stop方法;人为调用stop方法或run方法执

                                       行结束后,不具有继续运行能力

 

 

四、线程操作的相关方法

                 ①取得和设置线程名称:getName()setName()

                            1、一般在启动线程前设置名称,也允许为正在运行

                                  的线程设置名称

                            2、允许两个线程对象同名,但应尽量避免这种情况

                            3、无名线程系统会自动分配名称“Thread-Xx

                 ②判断线程是否启动:isAlive();判断线程是否启动而且仍

                                                    在运行

                 ③线程的强制运行:join();强制运行期间,其他线程无法

                                                  运行,必须等到此线程完成之后才可

                                                  以继续执行

                 ④线程的休眠:sleep()

                 ⑤中断线程:interrupt()

                 ⑥后台线程:setDaemon()java进程结束,后台线程也可

                                       以继续执行

                 ⑦线程的优先级:setPriority();优先级越高的线程越有可

                                              能被先执行,但不一定先执行,要看CPU调度

                            1MAX_PRIORITY : 10

                            2NORM_ PRIORITY : 5(主方法为此优先级)

                            3MIN_PRIORITY : 1

                 ⑧线程的礼让:yield();操作暂时让给其他线程

                 ⑨线程的等待与唤醒:wait()notify()

                 PS

1Runnable接口的子类对象直接调用run方法,是

                                  主方法的线程运行

                            2Java程序运行至少启动两个线程:main线程和

                                  垃圾收集线程

                            3、主线程有可能比其他线程先执行完,此时其他线

                                  程不会受到任何影响

 

 

五、同步与死锁

                 ①同步:多个操作在同一个时间段内只能有一个线程进行

                 ②同步方法:

                            1、同步代码块:     synchronized(同步对象){

需要同步的代码;

}

                            2、同步方法:synchronized 方法返回值方法名称(参数列表){

         方法体;

}

                 ③死锁:两个线程都在等待对方先完成,造成了程序停滞

                 PS1、过多的同步有可能产生死锁

                            2Java中方法定义的完整格式:

                                  访问权限 [final][static][ synchronized] 返回值类型方法名称(

                                                 数类型参数名称…)[throws Exception1, Exception2]{

              [return [返回值|返回调用处]]

}

 

 

六、线程的生命周期

 

 



  

分享到:
评论

相关推荐

    嵌入式Linux应用程序开发第9章多线程编程

    "嵌入式Linux应用程序开发第9章多线程编程" 本章主要讲解了 Linux 中的多线程编程,包括 Linux 线程的基本概念、创建及使用、属性设置、同步与互斥问题的处理等内容。通过学习本章,读者将掌握 Linux 中线程的基本...

    第9章多线程第9章多线程第9章多线程第9章多线程第9章多线程第9章多线程

    本章重点讲解了多线程的相关概念和技术。 9.1 线程概念 线程被定义为程序中的单一顺序控制流。在多线程环境中,一个程序可以包含多个这样的流,它们共享同一份程序资源,但各自拥有独立的执行路径。Java语言在语言...

    《Java语言编程基础》课件 第九章 多线程(电子版).pptx

    《Java语言编程基础》课件 第九章 多线程(电子版).pptx

    Java第九章多线程程序设计基础篇.ppt

    Java 多线程程序设计基础 多线程程序设计是 Java 语言的一个重要特性,允许程序同时执行多个任务,从而提高程序的效率和响应速度。本章将详细介绍 Java 多线程程序设计的基础知识。 §9.1 线程的概念 在 Java 中...

    Java开发实战从入门到精通视频教程下载第9章 多线程.zip

    在本《Java开发实战从入门到精通》视频教程的第9章中,我们将深入学习Java中的多线程技术。多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算环境中,多...

    MFC 多线程 socket编程

    4. **第九章多线程编程**: 这个章节可能详细介绍了如何在MFC中设计和管理多线程,包括线程的生命周期管理、异常处理、线程同步策略、线程间通信以及多线程环境下Socket编程的实践案例。 综上所述,MFC多线程...

    易编远航第一期-第九套多线程幻想神域实战视频

    2.熟悉在多线程下参数传递及子程序调用 3.副本功能的简单制作 4.特色功能的简单思路 幻想神域多线程实战视频 第一章(基础设置) 1.多线程实战之中控台简单说明 2.多线程实战之绑定模式与字库制作 3.多线程实战...

    C++网络编程实例文件之第十章 多线程网络文件传输的设计与实现

    C++网络编程实例文件,里面包含各个章节的C++源码。...第九章 基于Windows API的虚拟终端实现 第十章 多线程网络文件传输的设计与实现 第十一章 防火墙的设计与实现 第十二章 邮件转发器 第十三章 telnet bbs

    嵌入式Linux应用程序开发详解-第9章(多线程编程)

    ### 嵌入式Linux应用程序开发详解 - 第9章 多线程编程 #### 9.1 Linux下线程概述 ##### 9.1.1 线程概述 线程作为轻量级进程,是现代操作系统中重要的编程概念之一。在Linux中,线程的引入主要是为了提高系统的...

    嵌入式Linux应用程序开发详解第9章(多线程编程)_linux_

    本章“嵌入式Linux应用程序开发详解第9章(多线程编程)”将为我们揭示多线程在嵌入式环境中的应用与实践。 首先,多线程是现代计算机程序设计中的一种常见技术,它允许多个任务在同一时间片内并行执行,从而提高程序...

    嵌入式Linux应用程序开发详解-第9章(多线程编程).pdf

    ### 嵌入式Linux应用程序开发详解:多线程编程 #### 9.1 多线程编程概述 ##### 9.1.1 学习目标 - 掌握Linux中线程的基本概念。 - 掌握Linux中线程的创建及使用。 - 掌握Linux中线程属性的设置。 - 能够独立编写多...

    java 多线程设计模式 进程详解

    《JAVA多线程设计模式》PDF ...第九章 多处理器机器上的并行化 单线程程序并行化 内层循环线程化 循环输出 多处理器扩展 总结 第十章 线程组 线程组概念 创建线程组 线程组方法 操作线程组 线程组、线程和安全 总结

    第14章多线程.pdf

    Java语言提供了丰富的多线程支持,而本文件似乎是一本关于Java多线程技术的书籍或教程的第14章。 从提供的内容来看,该章节可能涵盖了一系列的Java多线程编程概念和技术: 1. 线程的创建和执行:在Java中,可以...

    JAVA语言程序设计-第十四章 多线程

    在JAVA语言程序设计中,第十四章主要探讨的是多线程这一核心概念。多线程是Java编程中不可或缺的一部分,它允许程序同时执行多个独立的任务,从而提高应用程序的效率和响应性。在Java中,多线程是通过实现Runnable...

    易编远航第一期-七套多线程高级视频教程(两种中控台操作)

    易语言调用大漠插件之多线程高级教程(第六套) 第一章 1.中控台组件的简单应用讲解 2.易大漠多线程高级之半自动玩家版中控台界面说明 3.易大漠多线程高级之中控台菜单应用 4.易大漠多线程高级之中控台刷新窗口...

    C# 多线程 应用程序 实例 程序 说明文件

    2. "第9章多线程技术.rar":这可能来自一本关于C#编程的教科书或在线课程的第九章,专门讲解多线程技术。章节可能详细介绍了线程的生命周期、线程优先级、线程池等高级主题,并通过示例代码加深理解。 3. "多线程...

    java多线程设计模式详解(PDF及源码)

    你来用 第6章 Read-Write Lock——大家想看就看吧,不过看的时候不能写喔 第7章 read-Per-Message——这个工作交给你了 第8章 Worker Thread——等到工作来,来了就工作 第9章 Future——先给您这张提货单 第10章 ...

    第10章 多线程.docx

    《第10章 多线程》主要涵盖了关于并发、并行、进程和线程的基础概念,以及如何在Java中创建和管理线程。以下是详细的知识点解析: 1. **并发与并行**: - **并发**:指的是在一段时间内,多个事件看似同时发生,但...

Global site tag (gtag.js) - Google Analytics