一、线程简介
- Process进程与Thread线程
程序是指令和数据的有序集合,本身没有任何运行的含义,为静态概念。
进程是执行程序的一次执行过程,为动态概念。是系统资源分配的单位。
通常在一个进程中包含若干个线程,当然一个进程至少包含一个线程,不然毫无意义。线程是CPU调度和执行的单位。
注意:很多多线程都是模拟出来的,真正的多线程是指多个CPU,即多核。 - main()称之为主线程,为系统的入口,用于执行整个程序。
二、线程实现(重点)
1. Java多线程实现原理
2. 线程实现的三种方式
Thread class ---->继承Thread类 (重点)
Runnable 接口---->实现(Runnable)接口 (重点)
Callable 接口---->实现(Callable)接口 (了解)
3. 小结
3.1 继承Thread类
- 子类继承Thread类具备多线程能力
- 启动对象:子类对象.start()
- **不建议使用,避免OOP单继承局限性**
3.2 实现Runnable接口
- 实现接口Runnable具有多线程能力
- 启动线程:传入目标对象+Thread对象.start()
- **推荐使用,避免单继承的局限性,灵活方便,方便同一对象被多个线程使用**。
package Thread;
//创建线程方法1 :继承Thread类,重写run()方法,调用start方法开启线程
//线程开启不一定立即执行,由CPU调度执行
public class TestThread extends Thread{
@Override
public void run() {
//run方法线程体
for (int i = 0; i < 20; i++) {
System.out.println("我在看代码"+i);
}
}
public static void main(String[] args) {
//main线程,主线程
//创建一个线程对象
TestThread testThread = new TestThread();
//调用start方法,开启线程
testThread.start();
for (int i = 0; i < 20; i++) {
System.out.println("我在学习多线程"+i);
}
}
}
package Thread;
//创建线程方式2,实现runnable接口,重写run,执行线程需要丢入runnable接口实现类,调用start方法
public class TestRunnable {
public static void main(String[] args) {
//创建runnable接口的实现类对象
//一份资源
MyRunnable myRunnable = new MyRunnable();
// //封装线程对象
// Thread t01 = new Thread(myRunnable, "线程01");
// Thread t02 = new Thread(myRunnable, "线程02");
// Thread t03 = new Thread(myRunnable, "线程03");
//
// //开启线程
// t01.start();
// t02.start();
// t03.start();
//多个代理
new Thread(myRunnable,"线程01").start();
new Thread(myRunnable,"线程02").start();
new Thread(myRunnable,"线程03").start();
//通过匿名内部类方式创建类
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println(Thread.currentThread().getName()+i);
}
}
},"线程04-").start();
}
}
class MyRunnable implements Runnable{
@Override
public void run(){
for (int i = 0; i < 50; i++) {
System.out.println(Thread.currentThread().getName()+"-"+i);
}
}
}
三、线程状态
四、线程同步(重点)
五、线程通信问题
六、高级主题
天将幕,雪乱舞,半梅花半飘柳絮......
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能