Java实现多线程的方法有两种,一是继承Thread类、二是实现Runnable接口。
一、继承Thread类
public class ThreadTest extends Thread { @Override public void run() { System.out.println("this thread name is:"+Thread.currentThread().getName()); } /** * @param args */ public static void main(String[] args) { ThreadTest t = new ThreadTest(); t.setName("myTestThread"); t.start(); } }
- 继承Thread后需要覆盖run()来实现自己的业务逻辑;
- 一个线程的启动是调用start方法,而不是run方法;
- 当给线程设置名称的时候,我们就可以得到设置的线程名称。
二、实现Runnable接口
public class RunnableTest implements Runnable { @Override public void run() { System.out.println("this thread name is:"+Thread.currentThread().getName()); } public static void main(String[] args) { System.out.println(Thread.currentThread().getName()); RunnableTest r = new RunnableTest(); Thread t = new Thread(r); t.start(); } }
- 实现Runnable接口需要实现run方法,在run方法里面实现自己的业务逻辑;
- 实现Runnable接口的类自己不能启动线程,需要将此类的对象传递给Thread,由Thread的start方法启动。
- main函数是java运行启动的入口,它是由一个name叫main线程调用的;如果一个线程没有专门设置名称,程序会默认的将名称设置为Thread-num,num是从0开始累加的数字。
三、线程的状态转换
- 当一个线程执行了start方法后,不代表这个线程就会立即被执行,只代表这个线程处于可运行的状态,最终由OS的线程调度来决定哪个可运行状态下的线程被执行。
- 一个线程一次被选中执行是有时间限制的,这个时间段叫做CPU的时间片,当时间片用完但线程还没有结束时,这个线程又会变为可运行状态,等待OS的再次调度;在运行的线程里执行Thread.yeild()方法同样可以使当前线程变为可运行状态。
- 在一个运行中的线程等待用户输入、调用Thread.sleep()、调用了其他线程的join()方法,则当前线程变为阻塞状态。
- 阻塞状态的线程用户输入完毕、sleep时间到、join的线程结束,则当前线程由阻塞状态变为可运行状态。
- 运行中的线程调用wait方法,此线程进入等待队列。
- 运行中的线程遇到synchronized同时没有拿到对象的锁标记、等待队列的线程wait时间到、等待队列的线程被notify方法唤醒、有其他线程调用notifyAll方法,则线程变成锁池状态。
- 锁池状态的线程获得对象锁标记,则线程变成可运行状态。
- 运行中的线程run方法执行完毕或main线程结束,则线程运行结束。
四、线程同步各个方法的区别
- Thread.yield()当前运行的线程变成可运行状态。
- t2.join() 使得当前线程处于阻塞状态直到t2线程执行完毕。
- Thread.sleep()使得当前线程处于阻塞状态直到sleep的时间结束。
- wait、notify、notifyAll方法是Object类的方法,其调用环境必须有synchronized的同步块中调用,否则会抛java.lang.IllegalMonitorStateException异常。
相关推荐
Java多线程是Java语言中的一个重要特性,它允许程序同时执行多个不同的任务,从而提高程序的效率和响应性。在操作系统层面,实现并发最常见的方式是通过进程和线程。进程是具有独立内存空间的执行单元,而线程是进程...
Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,提高了系统的效率和响应性。在Java中,多线程的实现主要通过两种方式:继承Thread类和实现Runnable接口。理解并掌握多线程的使用对于任何Java开发者...
《Java多线程编程实战指南》这本书深入浅出地讲解了Java多线程的核心概念和实战技巧,分为核心篇和设计模式篇,旨在帮助开发者掌握并应用多线程技术。 1. **线程基础** - **线程的创建**:Java提供了两种创建线程...
Java线程状态流转图知识点总结 Java线程状态流转图是一种用于描述Java线程生命周期中不同的状态和状态...通过了解Java线程状态流转图,我们可以更好地理解Java线程的生命周期,并提高Java多线程编程的效率和可靠性。
### Java线程:线程状态的转换 #### 一、线程状态及其转换 ...通过以上分析,我们可以看到Java线程状态转换的基本原理以及如何利用线程状态来控制线程的行为,这对于开发高性能、高可靠性的并发程序至关重要。
### Java多线程编程经验 #### 一、Java线程:概念与原理 现代操作系统都是多任务操作系统,其中多线程是一种重要的实现多任务的方式。线程是进程内的一个执行单位,一个进程可以包含多个线程。例如,在Java应用...
Java多线程是Java编程中一个重要的概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要分为两种实现方式:通过子类化Thread类和实现Runnable接口。 1. 子类化Thread类: 当...
《深入学习:Java多线程编程》是一本专注于Java并发技术的专业书籍,旨在帮助开发者深入理解和熟练运用Java中的多线程编程。Java多线程是Java编程中的核心部分,尤其在现代高性能应用和分布式系统中不可或缺。理解并...
1. **Java多线程基础知识**:Java多线程允许程序同时执行多个任务,这是通过创建和管理线程实现的。Java提供了两种创建线程的方式:继承Thread类和实现Runnable接口。线程的状态包括新建、就绪、运行、阻塞和终止,...
Java多线程是Java编程中的核心概念,尤其在开发高性能、高并发的应用时,多线程技术显得尤为重要。本系列视频教程将深入...通过学习这一系列视频,你将能够熟练掌握Java多线程技术,为编写高效并发程序打下坚实基础。
Java多线程程序设计是Java开发中的重要领域,它允许应用程序同时执行多个任务,从而提高系统资源的利用率和程序的响应速度。在Java中,多线程主要通过两种方式实现:继承Thread类和实现Runnable接口。 一、创建线程...
Java多线程笔记是 Java 编程语言中关于多线程编程的笔记,涵盖了线程基础知识、线程优先级、线程状态、守护线程、构造线程、线程中断等多方面的内容。 获取简单 main 程序中的线程 在 Java 中,可以使用 ...
本文将深入探讨Java多线程的核心概念、创建方式、线程状态转换、线程调度以及线程优先级调整。 首先,理解线程的基本概念至关重要。线程是进程中的一个执行单元,是操作系统调度的基本单位。与进程相比,线程更轻...
在这个场景中,"java多线程下载图片"意味着我们将探讨如何使用Java来实现一个能够异步下载多个图片的系统。 首先,我们需要理解Java中的线程是如何创建和运行的。Java提供了两种创建线程的方式:继承Thread类和实现...
### Java多线程编程总结 #### 一、Java线程:概念与原理 1. **操作系统中线程和进程的概念** - 当前的操作系统通常为多任务操作系统,多线程是实现多任务的一种手段。 - **进程**:指内存中运行的应用程序,每个...
### Java多线程小结 #### 一、多线程的概念与意义 多线程是Java编程中的一个重要概念,指的是程序在运行时可以同时执行多个线程的能力。它能够提高程序的性能,尤其是在多核处理器的环境下。多线程使得程序能够更...
Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,从而极大地提高了程序的效率和响应性。在Java中,多线程可以理解为程序中的不同执行路径,每个路径都称为一个线程。这使得应用程序能够同时处理多个...
Java多线程设计模式是Java开发中的重要领域,它涉及到并发编程、系统性能优化以及程序的稳定性。在Java中,多线程允许程序同时执行多个任务,极大地提升了程序的执行效率。本资源提供了详细的Java多线程设计模式的...
Java多线程学习基础原理主要涉及以下几个方面: 1. 线程的创建和启动 Java提供了两种创建线程的方式:继承Thread类和实现Runnable接口。当创建一个Thread类的子类对象并调用start()方法时,会启动一个新的线程,并...
Java多线程知识点梳理: 1. Java线程基础知识 - 线程是程序中独立的、并发的执行路径。每个线程都有自己的堆栈、程序计数器和局部变量,但与分隔的进程不同,线程之间的隔离程度较小,它们共享内存、文件句柄等...