多线程

多线程

多线程的实现方式:
1.继承Thread类
第一步:定义一个Thread类
第二步:重写run方法,将需要执行的代码写入到run方法里
第三步:创建Thread的子类对象
第四部:调用start()方法

2.实现Runnable接口
第一步:定义一个类 实现Runnable接口
第二步:重写run方法,将需要执行的代码写入到run方法里
第三步:创建Runnable的子类对象
第四步:创建Thread类的对象,将Runnable的实现类对象传递给它
第五步:调用start()方法

获取线程名称的方法:
1.使用Thread类的getName()方法
String getName() 返回该线程的名称

2.可以先获取到当前正在执行的线程
static Thread currentThread() 返回当前正在运行的线程对象的引用

实现Runnable接口创建多线程的好处:
1.避免了类的单继承的局限性
一个类只能继承一个类,类继承了Thread类就不能继承其他类,实现Runnable接口可以继承其他的类,实现其他的接口
2.增强了程序的扩展性,降低了程序的耦合性
实现Runnable接口,把设置线程的任务和开启线程进行了分离(解耦)
实现类中重写了run方法用来设置线程任务,创建Thread类对象,调用start()方法用来开启新线程

同步代码块:
定义在线程中,用来保证数据的安全性
格式:synchronized(锁对象){
可能会出现线程安全问题的代码
}
注意:
1.代码块中的锁对象可以是任意的对象
2.必须保证多个线程使用的都是同一个锁对象
3.锁对象的作用是把同步代码块锁住,保证只有一个线程在同步代码块内执行

线程的6种状态:
新建、阻塞、运行、计时等待、无限等待、死亡

等待:
void wait():在其他线程调用此对象的notify()方法或notifyAll()方法前,导致当前的线程处于等待状态
当一个线程处于等待的时候,会释放锁所占用的资源,让别的线程可以抢占资源

唤醒:
void notify():唤醒在此对象监视器上等待的单个线程,会继续执行wait()后面的代码
void notifyAll():唤醒在此对象监视器上等待的所有线程

wait()和notify()两个方法必须使用在同步代码块中,而且使用同步锁对象才能够调用

睡眠:
void sleep(long millis):是当前正在执行的线程以指定的毫秒数进行休眠(暂时停止执行)。等指定的毫秒数结束后,该线程恢复运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值