多线程

Posted 第4396个梦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关的知识,希望对你有一定的参考价值。

进程线程和线程的概念
进程:
       在windows中,每一个打开运行的应用程序或后台程序,比如运行中的QQ、谷歌浏览器、网易云音乐、资源管理器等都是一个进程
  我们都知道程序,一个程序是静态的,通常是存放在外存中的。而当程序被调入内存中运行后,就成了进程。 
       顾名思义,进程就是进行中的程序,它是个动态的概念。是系统进行资源分配与调度的基本单位.
  
      独立性: 进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自
      己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他
      进程的地址空间。
      动态性: 进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中
      活动的指令集合。在进程中加入了时间的概念。进程具有自己的生命周期和各种不同的状态,
      这些概念在程序中都是不具备的。
      并发性: 多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。

线程:线程就是进程中执行运算最小的单位.
继承Threa类创建多线程
  1.建类>>继承Thread类>>重写run方法
  2.Thread.currentthread().getName():  获取线程名称
  3.start();[启动线程] 
 
 注:开启多个线程是交替执行的
  4.直接调用run方法
  a.只有主线程一条执行路径
  b.依次执行两次run方法
案例:
  
public class MyThread extends Thread {
    
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(i + 1+Thread.currentThread().getName());
        }
    }

}

启动线程:

public static void main(String[] args) {
        // TODO Auto-generated method stub
        MyThread t1 = new MyThread();
            t1.start();
            
    }          

结果:
实现Runnable接口创建多线程

 a.定义一个Runnable接口的实现类 (类名 implems Runnable)

   

b.重写Run方法

c.创建线程对象Runnable 类名 =new  Runnable ();

 Thread 对象名称=new Therad(类名,"线程名称");

 d.启动线程 start();

 e.继承Therad类和实现Runnable接口的区别

   继承:编写简单缺点继承的单根性

   接口:避免单继承,便于资源共享

   推荐使用实现Runnable接口

案例:

public class MyRunnable implements Runnable {

    @Override
    public void run() {
        
        System.out.println("我是接口实现多线程");
        
    }
}

启动线程:

    public static void main(String[] args) {
        MyRunnable mr = new MyRunnable();
        Thread t2 = new Thread(mr);
        t2.start();
    }

Thread类的常用方法

  

 

 

  部分方法的演示

 

 

 

  

 线程的五种状态

   当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线
   程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked) 和死
   亡(Dead) 五种状态。尤其是当线程启动以后,它不能一直“霸占”着CPU 独自运行,所以CPU 需
   在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。
   如图:

 

  

 

 

以上是关于多线程的主要内容,如果未能解决你的问题,请参考以下文章

线程学习知识点总结

多个请求是多线程吗

python小白学习记录 多线程爬取ts片段

多线程编程

多线程编程

python多线程