java从入门到精通学习笔记(四)——多线程

本文介绍了Java中的线程状态,包括新建、运行、阻塞、等待、计时等待和终止。详细讲解了通过继承Thread类和实现Runnable接口来创建线程的方式,并探讨了线程同步的两种方法:synchronized关键字的使用和同步方法。通过实例解析了线程的生命周期和操作,如wait、notify、notifyAll、sleep和join等。

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

一、线程
状态:新建、运行(可运行)、阻塞、等待、计时等待、终止
对于单处理器的系统,虽然说是多线程并发执行,但同一时间点上只有一个线程被执行。


二、实现线程的两种方式
1. 继承java.lang.Thread类 
(1) Thread类的构造函数:
public Thread(String threadName);  //参数为线程对象的名称
public Thread();
(2) Thread类的常用函数:
start();      //调用该函数后,说明创建的线程处于运行(可运行)状态,该函数中会调用run()方法
run();        //该函数中含有该线程的任务
wait();       //正在运行的线程进入等待状态。。。释放锁。。不带参数时会永久等待,直到等到notify()
notify();     //等待的线程被唤醒
notifyAll();  //所有处于等待的线程都被唤醒
sleep();      //线程进入休眠状态,此方法可能抛出InterruptedException异常。sleep执行结束后不一定进入运行状态,只是在就绪状态。。不释放锁
join();       //在线程A的run()方法中使用线程B的对象调用join()方法,会使线程A暂停,直到调用join方法的线程结束后,A线程才会继续
setPriority();//设置线程的优先级
(3) 实现方法:
可写一个类继承自Thread类,重写run函数,然后new一个该类的对象,即为创建了一个进程,然后调用start()即可。
2. 实现Runnable接口
(1) 实质上Thread类也是实现的Runnable接口。
Thread类的构造函数:
public Thread(Runnable r)
public Thread(Runnable r,String name)
(2) 实现方法
先编写一个实现该接口的类,然后实例化一个该类的对象,此时即建立了一个Runnable对象;
然后使用相应的构造函数用Runnable对象实例化一个Thread对象;然后调用start()方法即可。


三、线程同步
1. 将共享资源的操作放在synchronized定义的区域,这样当其他线程也获取到这个锁时,必须等待锁被释放时才能进入这个区域。
synchronized(Object){
}
2. 同步方法:在方法前加synchronized关键字
synchronized void f(){}
当某个对象调用了同步方法,该对象的其他同步方法必须等待该同步方法执行完毕才能被执行。





















































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值