java之多线程
程序员文章站
2023-12-23 15:27:10
...
进程: 一个内存中运行的应用程序
线程:
线程在进程的内部, 一个进程中可以有多个线程
多个线程并发执行可以提高程序的效率, 可以同时完成多项工作注意:多线程节约的是执行程序的等待时间,如果程序排列紧密, 没有等待时间, 多线程下并不能真正的提高效率
一.多线程的应用:
1.百度云同时下载多个任务
2.服务器同时处理多个任务请求
二. 线程并发与并行的区别
并行:就是多个任务同时运行(需要多核CPU)
并发:是指多个任务都请求运行,而处理器只能接受一个任务, 就把多个任务安排轮流进行, 由于时间间隔较短,使人感觉两个任务都在运行
三.多线程的实现方式一
继承Thread
public class ThreadDemo extends Thread{
}
重写run()方法 在run()方法中定义线程体
public void run() {
for(int i=1;i<=20;i++){
System.out.println("一边学习...");
}
开启: 使用start()方法开启线程
public static void main(String[] args) {
//开启多线程 创建线程
ThreadDemo01 th=new ThreadDemo01();
//开启线程
th.start();
//th.run(); 如果直接而调用run方法的话注意:这是方法的调用,不是多线程的开启
for(int i=1;i<=20;i++){
System.out.println("一边打游戏...");
}
//th.start(); 主线程中代码执行完毕,只剩下一个th线程,看不到线程切换的效果
}
}
实现方式二
实现Runnable接口,重写run()方法 推荐
开启: 通过Thread类中start()开启线程
优点:
1.避免单继承的局限性
2.实现资源共享
public class ThreadDemo02 implements Runnable{
//定义线程体的方法,当被调用的时候,会逐行执行里面的代码
@Override
public void run() {
for(int i=1;i<=100;i++){
System.out.println("一遍玩游戏...");
}
}
public static void main(String[] args) {
ThreadDemo02 th=new ThreadDemo02();
//开启线程//创建线程
Thread t=new Thread(th); //因为开启线程的方法在Thread类中,Thread做为代理类出现
t.start();
for(int i=1;i<=100;i++){
System.out.println("一遍学习...");
}
}
}