java创建线程

Java之线程的创建 本文章主要介绍进程与线程的概念以及创建线程的三种方式:1.继承Thread类 2.实现Runnable接口 3.实现Callable接口。 阅读详情

线程

线程是隶属于操作系统的概念,是程序执行中的单个顺序流程。

进程是一个执行中的程序,是操作系统对其资源(内存和CPU时间等)进行分配的基本单位,每个进程都有自己独立的一块内存空间、一组系统资源,其内部数据和状态都是完全独立的。

多线程则是指一个进程中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句看上去几乎同时执行。

线程与进程的不同点:同类的多个线程共享一个内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小得多,所以,线程被称为轻负荷运行。

 

Java产生线程有两种方法:一种是继承Thread类,且覆盖其run方法;另一种是实现Runnable接口,并将实现类对象作为参数传递给Thread类的构造方法。

1.Thread类

public class MyThreadextends Thread {

public static void main(Stringargs[]){

MyThread a =  new MyThread();

a.start();

System.out.println("This is main thread");

}

public void run(){

System.out.println("This is another thread");

}

}

MyThread继承了Thread类,并覆盖了run方法。调用start方法之后,当操作系统分配时间片给这个线程后,线程启动。

2.Runnable接口

Runnable接口中的run方法是一个抽象方法,其实现类的run方法中定义的内容就是线程执行时的任务,因而实现类的run方法又称线程体。

注意:run方法无参数,并且返回类型为void。如果一个run方法有返回值或者参数,则不是线程体。

public class MyThreadimplements Runnable {

public static void main(Stringargs[]){

MyThread my =  new MyThread();

Thread a = new Thread(my);

a.start();

System.out.println("This is main thread");

}

public void run(){

System.out.println("This is another thread");

}

}

3.两种方法的比较

(1)直接继承线程Thread类:该方法编写简单,可以直接操作线程。由于已经继承Thread,不能再继承其他类了。

(2)实现Runnable接口:当一个类已经继承另一个类时,就只能实现Runnable接口的方式来创建线程。另外,使用此方法的更多原因是多个线程可共享实现类对象的资源。

public class Resourseimplements Runnable {

public int i;

public  Resourse(int _i){

i =_i;

}

public void run(){

while(true){

if(i>0){

i--;

System.out.println(Thread.currentThread().getName()+"  "+i);

}

else

break;

}

}

}

public class Test {

public static void main(String[]args){

Resourse m =new Resourse(100);

Thread a =new Thread(m);

Thread b =new Thread(m);

a.start();

b.start();

}

}

当Thread-0和Thread-1两个线程并发调用Resourse中的run方法,i就成了共享变量,当一个线程对i在进行自减时,另一个线程也在对i进行自减。

4.Volatile修饰符

当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。而普通的共享变量不能保证可见性,因为普通共享变量被修改之后,什么时候被写入主存是不确定的,当其他线程去读取时,此时内存中可能还是原来的旧值,因此无法保证可见性。

 

 

【Java用法】关于线程的创建方式,已知全网最全面的总结,七种创建线程的方式 关于创建线程的方式,属于基础的面试问题,一定要能够回答全哈,不过呢平时我们也会经常遇到,所以还是希望把这向种创建线程的方式全部记下来。 阅读详情

相关推荐

将雷达连接到树莓派的串口

dev/ttyAMA0 是树莓派的主要 UART(用于 GPIO 引脚 8 (TXD) 和 10 (RXD))。通常,树莓派使用 GPIO 引脚 8 (TXD) 和 10 (RXD) 进行串口通信。树莓派上通常有两个串口:/dev/ttyS0 和 /dev/ttyAMA0。你需要确认雷达的 TX 和 RX 引脚,并与树莓派的对应引脚连接。VCC(电源)连接到树莓派的 3.3V 或 5V(根据雷达的要求)MR(Receive)连接到树莓派的 GPIO 8 (TXD)GND(地)连接到树莓派的 GND。

qq_45943628的博客 1464

JAVA创建线程的方式

java 创建线程 线程池

weixin_44254397的博客 1319

双RTX 3090实战:如何用vLLM低成本部署Qwen2.5-14B大模型(附避坑清单)

本文详细介绍了如何利用双RTX 3090显卡低成本部署Qwen2.5-14B大模型的完整指南,包括硬件选型、环境配置、vLLM优化及生产环境调优。重点解析了BF16混合精度在显存占用与推理质量上的平衡策略,并提供了实用的避坑清单和性能调优技巧,帮助开发者高效实现大模型部署。

pz890123456的博客 698

java创建线程的4种方式

在Java中,创建线程有多种方式,每种方式都有其适用场景和优缺点。

m0_56341622的博客 3208

海洋与地质地理信息数据下载网站汇总集锦

各种海洋与地质地理信息数据集合

qq_36980284的博客 1267

别再为批次效应发愁了!手把手教你用Harmony整合10x单细胞数据(附完整R代码)

本文详细介绍了如何使用Harmony工具消除单细胞数据中的批次效应,提供完整的R代码实现跨样本数据整合。通过模糊聚类和渐进校正技术,Harmony能有效区分技术噪音与真实生物信号,适用于大型数据集处理。文章包含质控要点、参数设置建议及常见问题解决方案,助力研究者获得高质量整合结果。

weixin_27215403的博客 196

Java之多线程创建

Java多线程归纳前言传统的线程创建继承Thread类实现Runnable接口两者的共同点两者差别JDK 1.5开始出现的线程创建 前言 进程是资源分配的最小单位,而线程是执行任务的最小的单位。进程里的线程可以共享该进程拥有的资源,而进程之间不可以,进程奔溃了,在保护模式下,不会影响其他进程,而线程一旦出问题了,该进程也要GG思密达。总而言之,创建一个线程比创建一个进程要省事得多儿,这也是当今为...

legendaryhaha的博客 3819

10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地

小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1728

java中怎样创建线程_在 java中,怎样创建一个线程

在 java中,怎样创建一个线程关注:196答案:1mip版解决时间 2021-01-13 06:56提问者情癌晚期2021-01-12 13:21在 java中,怎样创建一个线程最佳答案二级知识专家云朵有点甜2021-01-12 14:33展开全部两种创建新线程的方式1.定义Runnable接口的实现类,重写run()方法创建线程的实例的时候将这个类的实例作为参数传递到线程实例内部。然后...

weixin_39526872的博客 607

【车载以太网】【AVB/TSN】IEEE802.1Qav队列及转发协议

目录 一、概述 二、优先级排队算法 三、基于信用的流量整形算法 一、概述 IEEE 802.1Qav 队列及转发协议(Qav)针对不同数据流选择不同的传输选择算法来保障对时间敏感的 AV 数据流的实时传输。为了避免传统的异步以太网数据流量与 AVB 流量之间对网络资源的竞争,AVB 交换机内使用优先级排队算法和基于信用的流量整形算法实现数据流的调度。 二、优先级排队算法 优先级排队算法主要用于传统以太网数据流(BE, Best Effort)的调度传输,BE 流通过基于优先级...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 4687

uni-app 实现高德 / 百度 / 腾讯地图多端导航跳转(H5最全方案)

本文介绍了一套生产级可复用的多地图导航Hook封装方案。针对开发中常见的经纬度顺序混乱、中文乱码、参数不统一等问题,提供了统一解决方案。方案支持高德、百度、腾讯三大地图平台,封装了各平台的URI参数处理逻辑,包括坐标顺序转换、名称编码、导航模式适配等核心功能。通过组合式API设计,开发者只需调用统一入口即可实现多地图导航跳转,同时保留单独调用各平台的能力。文中还总结了6大常见坑点,并推荐默认使用高德地图作为最稳定的导航方案。该方案适用于车辆定位、物流配送等多种业务场景,可封装为可复用的Hooks组件。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 537

Java-如何创建线程池

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 1、为什么要用线程池? 线程池提供了一种限制和管理资源(包括执行一个任务)。每个线程池还维护一些基本统计信息,例如已完成任务的数量。 这里借用《Java并发编程的艺术》,来说一下使用线程池的好处: 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管

了解➔熟悉➔掌握➔精通 4868

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java 线程创建方式

文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 本篇文章主要是记录Java线程的几种创建方式,以便需要的时候用来参考 一、创建方式说明 Java线程的创建方式有3种,分别是继承Thread,实现Runnable接口,通过Callable和Future接口创建(JDK1.5中开始增加)。还是有一种说法创建线程方式有4种,这4种除了前边提出的3种以外还有一种是通过线程池的方式创建线程。 二、继承Thread方式 1.代...

lcgskycby的博客 1108

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java 如何创建100个线程_java创建多线程

Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线程,有两种方法:◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法;◆实现Runnalbe接口,重载Runnalbe接口中的run()方法。为什么Java要提供两种方...

weixin_42380646的博客 1844

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java 如何创建一个线程_如何在java中创建一个线程

在java中创建一个线程有两种方法:第一种:将类声明为Thread的子类。并子类应重写Thread类的run方法并创建start方法启动线程。第二种:实现Runnable接口,并覆盖接口中的run方法,将线程的任务代码封装到run方法中;最后通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数进行传递。首先我们创建线程的目的是为了开启一条执行路径,去...

weixin_39922534的博客 2387

Java线程的创建

Java多线程的创建

weixin_44824428的博客 220

java创建线程的方法

使用 Java提供的 Thread类来创建线程,这里使用的是一个继承 Thread类的java.la ng. Thread类,下面是创建新的线程的代码: 其中 name代表这个线程的名字, static代表这个线程类型为 Long, static修饰符代表这个线程是永久存在的。在上面的例子中,使用 ThreadLock ()方法可以调用两个线程:第一个线程创建了一个新的线程,它是由 Thread类中的 thread对象创建的。线程是程序的一种操作单元,在程序中,一个线程和另一个线程是同时存在的。

花生日记 731

Java线程的创建方式详解

Java线程创建方式主要包括四种:继承Thread类、实现Runnable接口、实现Callable接口和使用线程池。继承Thread类简单直接但限制多继承;Runnable接口更灵活,支持资源共享;Callable接口可返回结果和抛出异常;线程池则能高效管理线程资源。根据任务需求选择合适方式,Runnable适用于常规多线程任务,Callable适合需要返回结果的场景,线程池则推荐用于高并发环境以优化性能。

2301_80017072的博客 1013

java创建两个线程_java多线程学习(两)——创建一个线程

一个、java创建两个线程的方法1、从java.lang.Thread派生一个新类线程类,其覆盖run()方法2、实现Runnable接口。重载Runnable接口中的run()方法。使用Thread类来创建线程和创建普通类的对象的操作是一样的,线程是Thread类或者其子类的实例对象。二、java提供的两种创建线程的差别java中类是单继承的,当定义一个新的线程类的时候。它仅仅能扩展一个外部类。...

weixin_39566387的博客 3565

java创建线程的几种方式

和Runnable接口类似但又不一样,Callable接口提供了一个call()方法来作为线程的执行体,call()方法比run()方法功能要更加强大,call()方法可以有返回值,也可以声明抛出异常(前两种如果要抛异常只能通过try,catch来实现)。追踪线程池的源代码,其实用线程池创建线程的本质最终也是使用 new Thread(target) 方法创建的线程,只是将创建的这些线程放入一个池子中进行管理了。方法:1.新创建Callable接口的实现类,并实现call()方法。

没有所谓的命运,只有不同的选择! 958

Java使用线程池创建线程

首先我们知道,线程的概念如果不知道可以去看这一篇,我们这篇主要讲述的是Java怎么使用线程池创建线程,首先我们要对线程池有点概念,其实顾名思义,线程池就是有喝多线程的一个池子类似于,大家搞数据库连接的时候的数据库连接池druid,什么池那就是存的什么东西了。

XingZaiUnrivaled的博客 1453

Java 创建线程的三种方式总结

Java 创建线程的三种方式总结 我们在开发中,为了提高程序的运行效率,经常会使用多线程的方式来实现并发操作。 那么创建线程有几种方式呢? 1、继承 Thread 类 直接继承 Thread 即可实现多线程。Thread 本质上也是实现了 Runnable 接口,线程启动的唯一方法是通过 Thread 类的 start() 实例方法实现的。start() 方法调用时,系统才会真正创建一个新线程,并执行 run() 方法,它是一个native方法。 class MyThread extends Th

卜大爷的博客 2万+

java创建线程的四种方式

创建线程的四种方式创建线程的四种方式继承Thread类实现Runnable接口通过Executor框架来创建线程池,高效实现实现Callable接口 学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:543120397 我们一起学Java! 创建线程的四种方式 1.继承Thread类(内有run方法、start方法、join方法) 2.实现Runnable接口(只有run方法) 3.通过Executor框架来创建线程池,高效实现(execu

u014344668的专栏 528

java怎么创建子线程_Java创建子线程的两种方法

摘要:其实两种方法归结起来看还是一种,都是利用Thread的构造器进行创建,区别就是一种是无参的,一种是有参的。一、继承Thread线程类:通过继承Thread类,重写run方法,子类对象就可以调用start方法启动线程,JVM就会调用此线程的run方法。代码如下:public class MyThread extends Thread {public MyThread() {super();}@...

weixin_33836042的博客 3160

Java中创建线程方式

在Java中创建线程有几种常见的方式,每种方式在不同的场景下有各自的优缺点,下面详细介绍几种创建线程的方式,并讨论它们的适用场景、优缺点以及相关的线程管理概念。

qq_45906596的博客 844
上一篇: JAVA异常
下一篇: Android Studio中有关R类地问题
e_small
博客等级 码龄11年 5粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值