`
chencvgk
  • 浏览: 16758 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Java 系列—— 多线程

 
阅读更多

实现线程的方式

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 。
这是继承Thread类实现线程的示例:
public class ThreadTest extends Thread {
public void run() {
// 在这里编写线程执行的主体
// do something
}
}

这是实现Runnable接口实现多线程的示例:
public class RunnableTest implements Runnable {
public void run() {
// 在这里编写线程执行的主体
// do something
}
}

这两种实现方式的区别并不大。继承Thread类的方式实现起来较为简单,但是继承它的类就不能再继承别的类了,因此也就不能继承别的类的有用的方法了。而使用是想Runnable接口的方式就不存在这个问题了,而且这种实现方式将线程主体和线程对象本身分离开来,逻辑上也较为清晰,所以推荐大家更多地采用这种方式。


线程的状态
在Java 1.4及以下的版本中,每个线程都具有新建、可运行、阻塞、死亡四种状态,但是在Java 5.0及以上版本中,线程的状态被扩充为新建、可运行、阻塞、等待、定时等待、死亡六种。

sleep()和wait()的区别

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

1、这两个方法来自不同的类分别是Thread和Object
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用


实现同步的方式


synchronized和Lock

关于死锁

线程池

分享到:
评论

相关推荐

    JAVA项目——多线程下载代码

    本项目以"JAVA项目——多线程下载代码"为主题,使用Eclipse集成开发环境进行实现,适合于Java初学者或毕业设计实践。下面我们将深入探讨相关的Java多线程下载知识点。 1. **线程基础**:在Java中,线程是程序执行的...

    java编程——Java线程

    ### Java线程详解 #### 线程概念与重要性 Java线程是Java编程语言中用于实现并发处理的关键机制之一...通过深入学习Java线程的理论和实践,开发者可以充分利用多线程的优势,构建出高性能、高响应性的Java应用程序。

    Java——多线程编程技术.pdf

    "Java多线程编程技术.pdf" Java多线程编程技术是Java平台的一个重要技术优势,是第一个直接把跨平台线程模型和标准的内存模型集成到语言中的主流语言。多线程编程技术是Java平台的一个重要技术优势,它可以使程序的...

    java高级编程——多线程,输入输出流,网络编程

    java高级编程——对多线程,输入输出流,网络编程这三大块的深入讲解。

    JAVA面试题——多线程.docx

    ### JAVA面试题——多线程知识点详解 #### 一、线程与进程的基本概念 线程和进程是并发编程中的两个基本概念。进程是操作系统进行资源分配和调度的基本单位,而线程则是进程中的实际运行单元。每一个进程都有其...

    Java练手小项目——多线程聊天室.zip

    【Java练手小项目——多线程聊天室】 在Java编程世界中,多线程是不可或缺的一部分,尤其在开发实时性、交互性强的应用时,如我们的主题“多线程聊天室”。这个实战项目旨在帮助开发者深入理解Java多线程的概念,并...

    文件复制——多线程

    在给定的标题“文件复制——多线程”中,我们可以推断出这个博客文章可能讨论的是如何利用多线程技术优化文件复制的过程。通常,这涉及到以下几个关键知识点: 1. **线程创建**:在Java或其他支持多线程的编程语言...

    实战Java虚拟机——JVM故障诊断与性能优化 pdf

    第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。

    第13章龟兔赛跑——多线程.ppt

    总结来说,通过学习"第13章龟兔赛跑——多线程",我们可以掌握Java中多线程的基本概念、创建和管理,以及如何利用多线程提高程序效率。理解并熟练应用这些知识对于开发高效、响应迅速的软件至关重要。

    Java 语法总结——线程(线程)

    这种设计使得多线程环境下的资源利用更为高效。 二、线程的创建 1. 实现Runnable接口:创建一个类实现Runnable接口,重写run()方法。然后通过Thread类的构造函数传入Runnable实例来创建线程,例如: ```java class ...

    java上机报告5——Java的多线程编程1

    Java 多线程编程应用场景 —— 电影院售票系统设计 本资源摘要信息将对 Java 多线程编程在电影院售票系统设计中的应用进行详细介绍。该系统模拟了电影院三个售票窗口同时出售电影票的过程,通过 Java 多线程编程...

    Java多线程之定时任务 以及 SpringBoot多线程实现定时任务——异步任务

    1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled

    初识通信——多线程服务器的建立

    在IT行业中,多线程服务器的建立是网络编程的一个重要组成部分,特别是在高并发场景下,如Web服务、游戏服务器等。本文将详细讲解如何初识通信,并以多线程服务器的构建为例,来阐述相关技术点。 首先,理解多线程...

    实战Java虚拟机——JVM故障诊断与性能优化

    第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...

    安卓Android源码——多线程断点下载.zip

    这个压缩包文件"安卓Android源码——多线程断点下载.zip"显然是为了展示如何在Android平台上实现这一功能。下面将详细解释多线程断点下载的核心概念和技术实现。 1. **多线程下载**:在单线程下载中,数据流通常由...

    Java多线程的小例子——吃包子

    这个名为"Java多线程的小例子——吃包子"的示例,旨在帮助开发者直观地理解多线程的工作原理。下面我们将深入探讨该示例所涉及的核心知识点。 首先,多线程通常涉及到以下几个关键概念: 1. **线程(Thread)**:...

    java多线程教程——一个课件彻底搞清多线程

    Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,从而提高应用程序的效率和响应性。本教程将深入讲解Java线程的相关知识,包括进程与线程的基本概念、线程的创建和启动、多线程的互斥与同步、线程...

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

    去睡觉吧 第11章 Thread-Specific Storage——每个线程的保管箱 第12章 Active Object——接受异步消息的主动对象 总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B Java的内存模型 附录C Java线程的...

    java多媒体与多线程处理实验

    ### Java多媒体与多线程处理实验知识点概览 #### 一、实验目标解析 本次实验旨在深入探索Java中多线程处理与多媒体应用的核心技术,具体目标包括: 1. **理解线程概念**:线程是操作系统能够进行运算调度的最小...

Global site tag (gtag.js) - Google Analytics