多线程

1.什么是多线程

多线程是进程中执行的最小单位,可完成一个独立的顺序流程。每个进程中,必须至少建立一个线程(这个线程名称为主线程)来作为这个进程运行的入口点。

进程

进程(Pricess)是程序的一次动态执行过程,它对应了代码的加载执行至执行完毕·的一个完整过程,这个过程也是进程从本身产生,发展至消亡的过程。

进程的特点

进程是系统运行程序的基本单位。

每一个进程都有自己的独立的一块空间,一组系统资源。

每一个进程的内部数据和状态都是全部完全独立的

多线程的好处

1.从分利用CPU的资源:执行单线程的程序时,如程序发生阻塞,CPU可能存在空闲状态,这将造成了计算机的资源浪费,而使用多线程可以在线程休眠的时候取运行其他线程,

这样可以打打提高资源利用率。

2.简化编程模型:一个即长又复杂的进程可以考虑分为多个进程,成为几个独立的运行部分。

3.带来良好的用户体验:由于多个线程可以交替执行,减少了避免因程序阻塞或意外情况造成的响应过慢现象,降低了用户等待的机率。

Tread类极其常用的方法                                          

构造方法                                                                           说明

Tread()                                                                             分配新的Tread对象

Tread(Runnable   target)                                                  分配新的Tread对象,target为run()方法调用的对象         

Treeab(Runnable,target,String  name)                              分配新的Tread对象,target为run()方法调用的对象,nam为新线程的名称

线程的优先级

当同一时刻有一个或多个线程处于运行状态时,他们需要排队等待CPU资源,每个线程会自动获得一个线程的优先级(Priority),优先级的高低反应线程的重要紧急程度。

那么此刻,一般优先级高的有先获得CPU的几率较大,但是这个结果不绝对,线程优先级调度是一个复杂的过程。

线程的优先级用1-10表示,1表示优先级最低,10表示优先级最高默认值是5,这些优先级对应一个Tread类的公用静态常量。

线程的休眠:

在程序中允许定义一个线程进行暂时休眠,直接用Tread.Sleep()方法即可以实现线程

sleep()方法定义语法如下:

public  static  void sleep(long  millis)

sleep()方法会让当前线程休眠(停止执行)millis毫秒,线程由运行到不可运行状态,睡眠时间过后线程将再次进入运行状态,调用sleep()方法需处理InterruptedException异常

示例:

public class ThreadDemo{
  public static void main(String[] args){
    System.out.print("Wait");
     Wait.bySec(5);       //让主线程等待5秒
            System.out.print("Start");
}
}

Wait类

public class Wait{
 public static void main(String [] args){
  for (int i = 0; i <s; i++) {
        System.out.print(i+1+"秒");
           try {
            Traed.sleep(1000);
        } catch (Exception e) {
            e.printStackTrace();
        }        
                
            }

}

}

 

 

多线程的状态流程图

 

原文地址:https://www.cnblogs.com/864466244qq/p/8556420.html