多线程基础
- 进程:进程就是运行中的程序,当被关闭的时候,这段进程也关闭。比如我们玩玩游戏,打开游戏操作系统会为该进程分配一个空间,当退出游戏是,进程也就结束了
- 线程:线程是由进程创建的,是进程的实体。比如我们下载东西,可以同时下载几个,下载一个就开启一个线程。再比如,qq聊天可以跟多个人聊,一个聊天对话框就是一个线程,可以拥有好几个线程。
- 一个进程可以有多个线程
- 单线程和多线程的基本概念:
- 单线程:同一时刻,只允许执行一个线程
- 多线程:同一时刻,可以执行多给线程,比如qq可以多个聊天窗口
- 并发:同一时刻,多个任务交替执行,造成“貌似同时”的错句,简单的说;单核cpu实现的多任务就是并发。理解:只有一个cpu去执行两个程序,在同一时刻cpu只能去执行一个程序,cpu只能来回切换,执行完一个在执行一个,但是这速度切换的非常快,好似同时执行一样
- 并行:同一时刻,多个任务同时执行。多核cpu可以实现并行,也可能出现并发和并行同时存在。加入我们电脑有两个cpu,有三个程序,这样就有一个是并发一个是并行
线程的基本使用
- 创建线程的两种方式
- 继承Thread类,重写run方法
- 实现Runnable接口,重写run方法
- 说明:当一个类继承了Thread类,该类就可当作线程使用
- 说明:为什么会有两个关于线程的创建方式,因为java是单继承的,因此,继承了Thread就不能继承其他类,所以我们可以使用Runnable接口
- 线程的方法和注意事项
package com.yc.join;
public class join_ {
public static void main(String[] args) throws InterruptedException {
/**
* 1.主线程每隔1s,输出hi,-共10次
* 2.当输出到hi 到5时,启动一个子线程(要求实现Runnable),每隔1s输出hello ,等该线程输出10次hello后,退出
* 3.主线程继续输出hi ,直到主线程退出,
*/
Thread thread = new Thread(new num());
for (int i = 0;i < 10; i++){
System.out.println("hi"+ i );
if (i == 5){
//执行线程
thread.start();
//插入线程
thread.join();
}
//睡眠1秒
Thread.sleep(1000);
}
}
}
class num extends Thread{
private int count = 0;
@Override
public void run() {
while (true){
System.out.println("hello"+(++count));
try {
//休眠一秒
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (count == 10){
break;
}
}
}
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 »
java中的多线程