先提一下进程,可以理解为操作系统管理的基本单元。
而线程呢,在进程中独立运行的子任务。举个栗子:QQ.exe运行时有很多子任务在同时运行,比如好友视频线程、下载视频线程、传输数据线程等等。
- 多线程的优势?
在单任务运行环境中,需要排队执行,也就是我们所说的同步,CPU利用率大幅降低。
多任务运行环境中,CPU可以来回切换,系统运行效率提升。多线程是异步的,所以千万不要把 Eclipse IDEA里的代码顺序当成线程执行顺序。
- 实现?
继承Thread类
package chapter1; public class MyThread extends Thread{ public void run(){ System.out.println("MyThread"); } }
package test; import chapter1.MyThread; public class Run { public static void main(String[] args){ MyThread mythread = new MyThread(); mythread.start(); System.out.println("结束"); } }
运行结果: 结束 MyThread//有个小小问题,为什么结束是在前面的噢,不管试多少次
注意:
- Thread.java类的start()通知线程规划器,等待调用线程的run()。这个过程让系统安排一个时间使线程得到运行,具有异步执行的效果。如果调用Thread.run(),就变成了同步执行,是由main主线程来调用run()的
- 执行start()方法的顺序不代表线程的启动顺序//可以多new几个,然后慢慢start
实现Runnable接口
首先,瞄一下Thread的构造方法
发现 ~ 构造函数可以传入Runnable接口的对象
package chapter1; public class MyRunnable implements Runnable{ public void run(){ System.out.println("Runnable"); } }
package test; import chapter1.MyRunnable; public class Run { public static void main(String[] args){ MyRunnable myRunnable = new MyRunnable(); Thread t1 = new Thread(myRunnable); t1.start(); System.out.println("结束"); } }
运行结果: 结束 Runnable//它怎么又是结束在前面
啊啊啊啊啊啊啊写文也太难了吧,代码和字都纯手打,放弃orz,入坑即弃坑,乖乖啃书了
原文地址:https://www.cnblogs.com/aroon-official/p/10284719.html
时间: 2024-10-01 20:19:32