java线程基本概念及实现

本文介绍了Java中的多线程编程,包括线程与进程的区别、Java中创建多线程的两种方式(继承Thread类和实现Runnable接口)、线程的生命周期以及一些常用的线程方法如sleep(), suspend(), resume(), wait(), notify()等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写一点基础,忘记了不用去翻书。

先说一下线程跟进程的关系:进程由操作系统进行管理的,而线程在包含在进程里面,

一个进程一般可以有有多个线程。线程的切换在用户态,开销小,效率高;而进程的

切换在核心态,开销高,效率相对低。多线程编程可以提高程序效率。


java 中多线程编程两种方法:1 继承 Thread 类 ;2 实现 Runnable 接口。

1.Tread 类:java.lang.Tread,它是一个具体的类而不是抽象类,该类封装了线程的行为,

要创建一个线程必须创建一个Tread 类的子类,并且重写它的 run()方法,run()即线程体,

是该线程真正执行的东西。但是我们 不调用run()方法,而是通过调用start()方法启动线程。

调用start()方法时,start方法会对与多线程 有关的进行初始化,使得线程处于就绪态,

一旦获得cpu即可进入运行态。

2.Runnable接口:java.lang.Runnable;该接口只定义了 一个 run()方法,所以必须实现它。


注:一般使用实现接口的方式实现多线程,因为java的继承是单继承,即一个类最多只能继承

一个父类,但是可以实现多个接口


线程的生命周期:

1.创建状态:利用 new关键字创建线程对象后实例后,它仅仅作为一个对象存在,没有获得任何资源。

2.就绪状态:调用start() 方法,线程转化为就绪态。此时对线程进行初始化,获得除了CPU外的其他所有

资源,一旦获得CPU使用权即可进入运行态。

3.运行态:线程正在运行。

4.阻塞态:指线程的暂停,此时不获得CPU。等待某个条件使得线程转化为就绪态。比如当一个线程进行

文件的读取时会先将线程阻塞然后进行文件读取操作,当文件读取完毕时再通知线程使得线程转化为就绪态。

4.死亡状态:调用线程对象的stop()方法后线程停止,资源比JVM回收。


线程的几个方法:

sleep():可以使线程在指定时间进入阻塞状态,比如sleep(1000)表示让线程阻塞 1 秒。

suspend() 和resume()方法:suspend()方法使得线程进入阻塞状态并且不会自动恢复,

必须与对应的resume()方法调用才能使线程变为就绪态。

wait()和notify()方法:wait()使得线程进入阻塞态并且可以指定以毫秒为单位,单超时时,

对应的motify()被调用使得线程重新为就绪态。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值