多线程:
1.1线程的概述:
线程是程序执行的一条路径, 一个进程中可以包含多条线程
线程并发执行可以提高程序的效率, 可以同时完成多项工作
1.2多线程的应用场景:
屏幕共享程序
各式可多个文件同时下载的下载软件
聊天工具软件
同时工作的服务器软件等
2.多线程并行和并发的区别(了解就好):
以两方概述进行比对
多线程并行的概述:
2.1.1并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)
2.1.2并发是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行。
2.1.3比如我跟两个网友聊天,左手操作一个电脑跟甲聊,同时右手用另一台电脑跟乙聊天,这就叫并行。
多线程并发的概述:
2.2.1如果用一台电脑我先给甲发个消息,然后立刻再给乙发消息,然后再跟甲聊,再跟乙聊。这就叫并发。
3.Java程序运行原理和JVM的启动是多线程的论证:
3.1 Java程序运行原理:
Java命令会启动java虚拟机,启动JVM,等于启动了一个应用程序,也就是启动了一个进程。该进程会自动启动一个“主线程” ,然后主线程去调用某个类的main 方法。
3.2 JVM的启动是多线程的论证:
原理上: JVM启动至少启动了垃圾回收线程和主线程,所以是多线程的。
代码证实:
public class Demo1_Thread {
Public static void main(String[] args) {
For(int I = 0; I <100000; i++){
New Demo();
}
For(int i = 0; I < 10000; i++){
System.out.println(“我是主线程的执行代码”);
}
}
}
Class Demo {
Public void finalize() {
System.out.println(“垃圾被清扫了”);
}
}
4.多线程程序实现的方法
4. 1 继承Thread
定义类继承Thread
重写run方法
把新线程要做的事写在run方法中
创建线程对象
开启新线程, 内部会自动执行run方法
实现代码:
public static void main(String[] args) {
MyThreadmt = new MyThread();
mt.start();
for(inti = 0; i < 1000; i++) {
System.out.println("bb");
}
}
}
class MyThread extends Thread {
publicvoid run() {
for(inti = 0; i < 1000; i++) {
System.out.println("aaaaaaaaaaaa");
}
}
4.2实现Runnable
定义类实现Runnable接口
实现run方法
把新线程要做的事写在run方法中
创建自定义的Runnable的子类对象
创建Thread对象, 传入Runnable
调用start()开启新线程, 内部会自动调用Runnable的run()方法
实现代码:
public static void main(String[] args) {
MyRunnablemr = new MyRunnable();
//Runnabletarget = mr; mr = 0x0011
Threadt = new Thread(mr);
t.start();
for(inti = 0; i < 1000; i++) {
System.out.println("bb");
}
}
}
class MyRunnable implements Runnable {
publicvoid run() {
for(inti = 0; i < 1000; i++) {
System.out.println("aaaaaaaaaaaa");
}
}
|