多线程基础

 现在的我们打开电脑,可以同时运行多个程序,比如、在听音乐的同时,还在聊天,当然还有玩游戏等等。

  大家打开任务管理器工具后,就能点到进程选项卡,就会发现:我们没有运行多少个程序,但是,在列表里面,一般都多达几十个进程。每

一个进行都对应一个应用程序。然后,再点到性能选项卡,看到左下角的总数分组框中,会发现:线程数远远多于进程数。

  这是为什么呢?就是因为,我们的程序,如果是多进程,同样能够同时运行很多程序,但是,进程是直接  独占  硬件资源的,所以,进程

数越多,电脑的剩余资源就越少,电脑就越慢。但是我们同一个程序,能同时做很多事情,比如,QQ聊天软件,在和这人聊天的同时,另一个

好友发信息来了,是不是都能同时收到?难道,每一个窗口,都要去开一个独立的进程?那样的话,如果,聊天的窗口一多。电脑都只能聊QQ

了。。。但是我们发现,即使QQ的聊天窗口很多,但是卡的话,只会QQ卡,其他程序不会卡。这是为什么呢?这里就引入了我们的线程!

  为什么需要线程呢?
  有些任务必须由线程来执行,像播放器在播放的时候,调用一个线程去播放,肯定还要能够在播放的时候,可以暂停或停止,那么这些按钮

功能也要有线程来和播放同步执行。
  一些任务可以在后台运行
  一些任务本身是多线程的,像播放视频的时候,肯定还要有声音吧?那一个线程播放画面,另一个线程播放声音。
  一些任务可以被细分,从而接受并行处理。

  那么什么是线程呢?我们可以把一个线程看成一个独立的虚拟的小电脑。这个虚拟的小电脑由我们来创建,并让它按照我们的控制流去执行

。而所有的线程都是在进程内部的,所以,线程分享的是进程分得硬件的资源。也就是说,线程再多(这里用到了再多,就是表明了,线程可以

创建多个的),也不会影响除包含该线程的进程以外的程序。

  那么线程既然这么好,是不是很难呢?我们来看看线程的两种方式:

方式一:继承Thread类
  
  //继承Thread类
  public class MyThread extends Thread{

  //重写Thread实现的Runnable的run方法,因为Thread自身也实现了Runnable接口
  public void run(){

    //这里写上我们创建了该线程后,要执行的代码

  }
  public static void main(String [] args){
  
   MyThread mt = new MyThread();
   //注意,我们这里调用的是start方法,是因为,线程创建以后,还要做一系列的初始化工作,这些工作就交给了start方法,初始化完毕后

,start会自动调用run方法。
   mt.start();
   
  }

}

方式二:实现Runnable接口
  public class MyRunnable implements Runnable{
   //重写Runnable的run方法
  public void run(){

    //这里写上我们创建了该线程后,要执行的代码

  }

   public static void main(String [] args){
 
  //得到MyRunnable对象
    MyRunnable mr = new MyRunnable();
  //创建一个MyRunnable的线程对象
    Thread t = new Thread(mr);
  //启动线程
    t.start();

   }
}

  线程的生命周期:新建一个对象---->调用start方法让线程就绪--->运    行---->结束(死亡)
                                                                         ↑                                 |
                                                                         |                                  |
                                                                         |                                  ↓
                                                                         ←-----------------------阻塞


  至于线程的同步等问题,后续再讲解。欢迎大家指正~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

easewalk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值