一.多线程
多线程的应用
多线程的应用,能够编写出十分高效的程序。不过如果你创立太多的线程,程序执行的效率实际上是升高了,而不是晋升了。
并发与并行
并发:指多个事件在同一个时间段内(10秒内)产生。
并行:多个事件在同一时刻产生(同时产生)。线程与过程的区别
过程就是应用程序,每个过程里有多个线程。而线程是一组指令的汇合,能够在程序里独立执行。
具体化了解:咱们用的手机有多个APP,我想要边用网易云听歌边用idea写代码还想边用迅雷下载学习材料,而后用迅雷下载多个软件。在该案例外面能够把多个不同的的APP了解为过程,把迅雷外面的多个下载的工作了解为线程。多线程的创立
多线程的创立有四种办法:
1.实现 Runnable 接口;
2.继承 Thread 类自身;
3.应用外部匿名类;
4.Callable 和 Future 创立线程。
但咱们先只讲前三种。
一、继承Thread类,重写run办法--记住开启线程的办法是start()不是run()
class day1 dextends Thread {【run办法中编写 多线程须要执行的代码】 publicvoid run() { for (inti = 0; i< 10; i++) { System.out.println("i:" + i); } }}
二、实现Runnable接口,重写run办法
class day2 implements Runnable { @Override public void run() { for (inti = 0; i< 10; i++) { System.out.println("i:" + i); } } }
三、应用外部匿名类
class day3{ public static void main(String[] args) { Runnable r = new Runnable(){ public void run(){ for (int i = 0; i < 20; i++) { System.out.println("琉西亚"+i); } }}; new Thread(r).start(); for (int i = 0; i < 20; i++) { System.out.println("刘欣雨"+i); } }}
留神:
实现Runnable接口比继承Thread类好:
- 能够多个雷同的线程去共享同一个资源。
- 能够防止java中的单继承的局限性。
- 减少程序的健壮性,实现解耦操作。
多线程的运行状态转换图
当new一个线程时为新建状态,当调用start办法返回时为就绪状态,当CPU调用run办法时处于运行状态,当处于阻塞状态时可能为调用sleep、调用I/O被阻塞,调用完run办法为死亡状态。