`
tianruirui
  • 浏览: 5569 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java多线程编程笔记之多线程技能

阅读更多

Java技术分享微信公众号:JavaQ,欢迎围观吐槽,最新文章分享公众号同步更新!

1.进程和线程的概念及线程的优点
进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位。
线程可以理解成是进程中独立运行的子任务。
线程的优点是最大限度的利用CPU的空闲时间来处理其他任务,提升系统的运行效率。

2.使用多线程
实现多线程编程的方式主要有两种,一种是继承Thread类,另一种是实现Runnable接口。Thread类实现了Runnable接口。使用继承Thread类的方式,最大的局限就是不支持多继承,所以推荐使用实现Runnable接口方式。使用多线程技术,代码的运行结果与代码的执行顺序或调用顺序是无关的。
多线程并发访问一个类的某个实例的实例变量时会出现线程不安全的问题,而方法级别的变量是线程安全的。synchronized关键字可以在任意的对象及方法上加锁,而加锁的这段代码称为“互斥区”或“临界区”。线程要想执行临界区中的代码,需要拿到对应的锁,在多线程的情况下会有多个线程同时去争一把锁,直到拿到锁为止。

3.currentThread方法
currentThread()方法可返回当前代码段正在被哪个线程调用的信息。例如,Thread.currentThread().getName()返回当前线程的线程名称。

4.isAlive方法
isAlive()方法的功能是判断当前线程是否处于活动状态。活动状态是指线程已经启动尚未终止,线程处于正在运行或准备开始运行的状态。

5.sleep方法
sleep()方法的作用是在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),需要注意,此时并不会释放所持有的锁。

6.getId方法
getId()方法的作用是取得线程的唯一标识。

7.start方法
start()方法用于真正去启动一个线程,等待调度执行。

8.run方法
run()方法是线程被调度执行时真正执行的方法。

9.停止线程
在Java中有以下3种方法可以停止正在运行的线程:
1)使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。
2)使用stop方法强行终止,但是不推荐这个方法,因为这个方法可能产生不可预料的结果,而且这个方法已经被官方标记为废弃,不建议使用了。
3)使用interrupt方法中断线程,需要结合interrupted方法,通过抛异常的方式。
Thread类中提供了以下两个方法用于判断线程的状态是不是停止:
1)interrupted()测试当前线程是否已经中断,即判断当前运行interrupted()方法的线程的中断状态是否为true,interrupted()方法被调度执行后会清除掉中断状态为false。
2)isInterrupted()测试线程是否已经中断,但是不会清除掉中断状态。

10.暂停线程
暂停线程意味着线程还可以恢复。在Java的多线程中,使用suspend()方法暂停线程,使用resume()方法恢复线程的执行。
使用这两个方法时需要注意以下两点:
1)suspend和resume使用不当,会造成公共的同步对象的独占,使其它线程无法访问公共同步对象。
2)suspend和resume也会容易出现因为线程暂停而出现的数据不同步的情况。

11.yield方法
yield方法的作用是放弃当前的CPU资源,将其让给其它任务去占用CPU执行时间,放弃的时间不确定,可能会马上再次获得CPU时间片。

12.线程的优先级
在操作系统中,线程可以划分优先级,优先级较高的线程得到的CPU资源较多,也就是CPU优先执行优先级较高的线程对象中的任务。在Java中,设置了1~10这10个优先级等级,默认MIN_PRIORITY=1,NORM_PRIORITY=5,MAX_PRIORITY=10。线程的优先级具有继承性,比如A线程启动B线程,则B线程的优先级与A线程优先级相同。优先级对于线程的运行是有随机性的。

13.守护线程

在Java中有两种线程,一种是用户线程,一种是守护线程。守护线程是一种特殊的线程,它具有陪伴的特性,当线程中不存在非守护线程了,守护线程也就自动销毁了。 

0
4
分享到:
评论
1 楼 tieye 2016-08-23  
如何在 线程池 中 给线程设置名称 了解吗?

相关推荐

    java多线程编程笔记

    【Java多线程编程笔记】 Java 多线程编程是Java开发中不可或缺的一部分,它允许程序同时执行多个任务,提高程序的效率和响应性。在深入理解Java多线程之前,我们首先要理解操作系统中的基本概念——进程和线程。 1...

    Java并发编程学习笔记 pdf 多线程编程

    Java并发编程学习笔记,研究JAVA并发多线程编程的一本教程,使用并发技术可以开发出并行算法,充分利用多处理器的计算能力,避免硬件资源浪费。目前,在JAVA并发编程方面的论述系统且内容详实的技术资料不太多,Java...

    JAVA 多线程学习笔记

    在Java编程中,多线程是一项关键技能,它允许程序...通过深入学习和实践这些知识点,我们可以更好地理解和掌握Java多线程编程,提升程序的并发性能。结合源码分析和实际工具的使用,将使我们成为Java多线程领域的专家。

    Java多线程笔记

    Java多线程笔记是 Java 编程语言中关于多线程编程的笔记,涵盖了线程基础知识、线程优先级、线程状态、守护线程、构造线程、线程中断等多方面的内容。 获取简单 main 程序中的线程 在 Java 中,可以使用 ...

    java多线程并发编程知识导图笔记.xmind

    java多线程并发编程知识导图笔记.xmind

    多线程笔记多线程笔记

    使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。 一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。 Java中,每个线程都有一个...

    java多线程编程总结

    ### Java多线程编程总结 #### 一、Java多线程概述 Java多线程是Java编程语言中不可或缺的一部分,它允许程序同时处理多个任务,从而显著提高应用程序的性能和响应速度。Java5之前的版本虽然支持多线程,但在语言...

    java多线程笔记

    线程同步是为了避免多线程环境下的数据竞争问题,Java提供了多种同步机制。同步方法通过`synchronized`关键字修饰,确保同一时间只有一个线程能访问该方法。同步块(Synchronized Block)更灵活,可以指定同步的代码...

    Java多线程详解(超详细)_狂神说笔记完整版_项目代码_适合小白随课程学习

    Java多线程详解 在Java编程中,多线程是一种重要的技术,它使得程序能够同时执行多个任务,提高系统的效率和响应性。本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者...

    多线程学习笔记

    GCD的使用更为简单和面向对象,它的目的是简化多线程编程,使得开发者能够更加方便地实现并发执行。 GCD中执行任务的两个常用函数是dispatch_sync和dispatch_async。dispatch_sync函数用于同步执行任务,它将任务...

    读书笔记:《Java 多线程编程实战指南》读书笔记.zip

    读书笔记:《Java 多线程编程实战指南》读书笔记

    读书笔记:Java多线程编程实战指南设计模式篇 之读书笔记.zip

    读书笔记:Java多线程编程实战指南设计模式篇 之读书笔记

    java多线程笔记全手打

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的运行效率和资源利用率。本笔记全面涵盖了多线程的学习,包括基础理论和实践代码,旨在帮助开发者深入理解并掌握Java多线程技术。 一、...

    Java多线程自学笔记

    ### Java多线程自学笔记知识点总结 #### 一、Java多线程概念 - **多线程定义**:多线程是指程序中可以同时执行多个线程的能力。Java虚拟机支持多线程机制,允许应用程序在不同的线程上并行执行任务。 - **线程特点...

    java多线程读书笔记

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,从而提高系统的效率和响应性。多线程在操作系统层面是通过进程和线程实现的,而Java则提供了一套丰富的API来支持多线程编程。 在操作系统...

    读书笔记:Java多线程编程实战指南核心篇.zip

    读书笔记:Java多线程编程实战指南核心篇

    马士兵多线程笔记.zip

    在IT领域,多线程是程序设计中...马士兵的多线程训练营资料1和资料2可能涵盖了以上这些知识点的详细讲解,通过学习这些内容,开发者可以掌握多线程编程的基本技能,解决实际项目中的并发问题,提升软件的性能和稳定性。

    读书笔记:参考书目java多线程编程实战指南.zip

    读书笔记:参考书目java多线程编程实战指南

    张孝祥Java多线程与并发库高级应用笔记

    ### 张孝祥Java多线程与并发库高级应用笔记概览 #### 一、Java多线程技术的重要性与挑战 Java线程技术是软件工程领域不可或缺的一部分,尤其在底层编程、Android应用开发以及游戏开发中,其重要性不言而喻。然而,...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第一阶段05讲、采用多线程方式模拟银行排队叫号.mp4 │ 高并发编程第一阶段06讲、用Runnable接口将线程的逻辑执行单元从控制中抽取出来.mp4 │ 高并发编程第一阶段07讲、策略模式在Thread和Runnable...

Global site tag (gtag.js) - Google Analytics