wordpress 购物导航网站,西乡塘网站建设,浙江省建设厅网站图审备案,辽宁网站建设Java系列文章目录
补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容#xff1a;三、问题描述start() 方法run() 方法 四、解决方案#xff1a;4.1 重复调用 .run()4.2 重复调用 start()4.3 正常调用…
Java系列文章目录
补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容三、问题描述start() 方法run() 方法 四、解决方案4.1 重复调用 .run()4.2 重复调用 start()4.3 正常调用 start() 不会报出异常4.4 并行、并发与串行的区别 五、总结 一、前言
主要是start()与run()的区别并发、并行、串行的区别 二、学习内容
学习多线程抢占 CPU 资源。start() 与 run() 函数的区别。 三、问题描述
start() 方法
功能用于启动一个新线程。线程状态线程从 “New” 状态转变为 “Runnable” 状态已准备未执行。并发执行调用线程和新线程可以并发执行。多次调用一个线程只能调用一次 start()如果尝试多次调用会抛出java.lang.IllegalStateException 异常。
总结
⭐️start() 方法启动线程。⭐️必须避免重复启动已结束的线程。
run() 方法
功能定义线程的具体执行任务。线程状态当前线程顺序执行使用.run() 方法并不会启动新线程只在当前线程中执行。多次调用可以多次调用 run() 方法只在当前线程中执行。
总结
⭐️run() 方法是本线程的任务内容不会创建新线程。 四、解决方案
4.1 重复调用 .run() 无异常因为在当前线程里面 class MyThread extends Thread{Overridepublic void run(){System.out.println(ThisThread Thread.currentThread().getName());}
}public class test{public static void main(String[] args){Thread MyThread1 new MyThread();for(int i 0; i 3; i){MyThread1.run();//此处}}
}4.2 重复调用 start() Java 设计线程时明确规定一个线程的生命周期管理。通过确保每个线程只能被启动一次 ⭐️报出 llegalComponentStateException 异常 class MyThread extends Thread{Overridepublic void run(){System.out.println(ThisThread Thread.currentThread().getName());}
}public class test{public static void main(String[] args){Thread MyThread2 new MyThread();//一个线程for(int i 0; i 3; i){MyThread.start();//多次}}
}
4.3 正常调用 start() 不会报出异常 每个线程启动一次 class MyThread extends Thread{Overridepublic void run(){System.out.println(ThisThread Thread.currentThread().getName());}
}public class test{public static void main(String[] args){for(int i 0; i 3; i){Thread MyThread3 new MyThread();//一个线程MyThread.start();//每次启动}}
}4.4 并行、并发与串行的区别
串行 (Serial) ○ 定义任务一个接一个地顺序执行。 ○ 特点只有一个任务在运行必须等待前一个任务完成后才能开始下一个任务。 ○ 例子做饭时先切菜等切完菜再煮汤。并发 (Concurrency) ○ 定义多个任务在同一时间段内交替进行可能在不同上下文间切换。 ○ 特点任务可以同时启动但不一定同时完成。系统会在多个任务之间切换。 ○ 例子在做饭的过程中边切菜边煮汤虽然每项具体工作都在某个时刻只做一件但两者之间切换。并行 (Parallelism) ○ 定义多个任务在同一时间真正同时执行。 ○ 特点需要有多个处理单元如多核CPU。任务完全独立实际同时运行。 ○ 例子在厨房里两个厨师同时切菜和煮汤真正实现了同时的物理执行。 五、总结
使用 start()启动线程让其并发执行。使用 run()直接执行任务不会创建新线程适用于顺序执行任务。
⭐️ 通过 start() 方法才能启动新线程
后续有遇到问题再添加 声明如本内容中存在错误或不准确之处欢迎指正。转载时请注明原作者信息麻辣香蝈蝈。