Java基础复习线程

线程

实现多线程的两种方法

继承Thread类,重新run方法

Thread a=new MyThread(“子线程”);

thread.start();


实现Runnable接口,实现run方法。

MyRunnable my=new MyRunable(); 在这个MyRunnable类中已经重写了run方法

Thread thread =new Thread(myRunnable,"子线程2");

Thread thread =new Thread(myRunnable,"子线程3");

thread.start();


线程的生命周期

------指线程从创建到启动,直至运行结束

------可以通过调用Thread类的相关方法影响线程的运行状态

线程的运行状态

-----新建(new)

----可执行(runnable)

其他线程调用了处于新建状态线程的start方法,该线程对象将装换到‘可执行状态';

-----运行(runnxing)

1处于‘可执行状态’的线程对象一旦获得了CPU控制权,就会装换到‘执行状态’

2在‘执行状态’下,线程状态占用CPU时间片段,执行run方法的代码

3处于'执行状态'下的线程可以调用yield方法,该方法用于自动出让CPU控制权。

线程对象出让控制权后回到‘可执行状态’,重新等待调度。

两者区别

1.runnable接口必须实现run方法,而Thread类中的run方法是一个空方法,可以不重写。

2、runnable接口的实现类并不是真正的线程类,只是线程运行的目标类。要想以线程的方法方式执行run方法,必须依靠

Thread类

3、runnable接口适合于资源的共享

-----阻塞(blocking)

----死亡(Dead)


阻塞状态(Blocking)

---线程在‘执行状态’下由于受某种条件的影响被迫出让CPU控制权,进入阻塞状太

进入阻塞状态的三种情况

--调用sleep方法

--调用jion方法

  处于“执行状态”的线程如果调用了其他线程的jion方法,将被挂起进入“阻塞状态”

  等目标状态执行完后才会解除阻塞,回到“可执行状态”

--执行I/O操作


线程同步:

1.解决线程并发安全问题。

2.用synchronized来解决线程同步

3.synchronized可以修饰方法和代码块

3.1 修饰的方法,称为同步方法

3.2修饰的代码块,称为同步块

3.3如何在一个线程类中有多个方法,那么只会锁在synchronize修饰的方法,其他方法则可以正常访问。

只能一个个访问,等一个线程完成后另一个在等待状态。

wait()方法:

中断方法的执行,使本线程等待,暂时让出cpu的使用权

notify()方法:

唤醒由于使用这个同步方法而处于等待线程的某一个结束等待

notifyall()方法:

唤醒所有由于使用这个同步方法而处于等待的线程结束等待



 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值