Java多线程系列一线程是什么?怎么理解多线程!学不会就是我笨!

网友投稿 694 2022-05-29

目录

1、什么是线程

2、线程的状态

3、怎么通俗理解进程,线程?

4、线程和进程的区别

5、什么是线程安全

6、如何创建线程

1、什么是线程

线程是操作系统调度的最小单元,也叫轻量级进程。它被包含在进程之中,是进程中的实际运作单位。同一进程可以创建多个线程,每个进程都有自己独立的一块内存空间。并且能够访问共享的内存变量。

2、线程的状态

线程的状态一般看到的也就是Runable 和blocked ,最多的还是blocked,因为cpu的时间片很短,切换的很快等待IO,等待临界资源。大概知道就好

3、怎么通俗理解进程,线程?

举个例子,开了一家餐厅,餐厅这个实体就是进程,餐厅里的服务员就是线程,餐厅里的座位就是资源(游戏内的数据),所有的服务员都可以安排客人就座,多个服务员安排座位就是多线程竞争,锁也就是去排号。线程池就是有多个服务员一直站在那里等着被呼叫。

4、线程和进程的区别

进程它是具有独立地址空间的,优点就是隔离度好,稳定,因为它是操作系统管理的,进程和进程之间是逻辑隔离的,只要操作系统不出问题的话,一个进程的错误一般不会影响到其它进程,缺点就是信息资源共享麻烦。而线程只是进程启动的执行单元,它是共享进程资源的,创建销毁、切换简单,速度很快,占用内存少,CPU利用率高。但是需要程序员管控的东西也比较多,相互影响出问题的机率较大,一个线程挂掉将导致整个进程挂掉,所以从程序员的角度来讲,我们只能看到某种代码是线程安全的,而没有说进程安全的。

5、什么是线程安全

在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。

类比:在餐厅里,每个服务员都有一份自己排号,比如我刚刚安排了一个人去坐在8号座,那我想当然的以为是下一个是9号座,如果另外一个服务员同时安排了9号桌,我再去安排就会造成数据不安全了,出现问题了。

6、如何创建线程

java创建线程的三种方式:

《Java多线程系列一》线程是什么?怎么理解多线程!学不会就是我笨!

继承Thread类创建线程类,无法继承其他类。

实现Runnable接口

通过Callable和Future创建线程

package thread;

/**

* @author 香菜

*/

public class ExtendThread extends Thread {

@Override

public void run() {

System.out.println("ExtendThread");;

}

}

package thread;

import java.util.concurrent.Callable;

/**

* @author 香菜

*/

public class ImpCallable implements Callable {

@Override

public Integer call() throws Exception {

System.out.println("Callable ");

return 1;

}

}

package thread;

/**

* @author 香菜

*/

public class ImpRunnable implements Runnable {

@Override

public void run() {

System.out.println("Runnable");

}

}

package thread;

import java.util.concurrent.FutureTask;

/**

* @author 香菜

*/

public class Aain {

public static void main(String[] args) {

new ExtendThread().start();

new Thread(new ImpRunnable()).start();

new Thread(new FutureTask<>(new ImpCallable())).start();

}

}

总结:线程的概念来自于生活,理解了概念,在项目中思考的时候只要搞清楚项目的线程模型,基本上不会遇到太大的问题。下期写下future,好了,我继续刷题去了。

先学会这些调试技巧,再写代码,效率提高十倍。吐血整理!

Java 任务调度 多线程

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java并发编程(一)---原子性,可见性,有序性
下一篇:利用 apipost 生成mock数据
相关文章