线程、多线程、进程、线程生命周期、线程的五种状态、同步、线程间通信、创建线程的俩种方式

进程概念:
进程是指可执行程序存放在计算机存储器的一个指令序列,它是一个动态执行的过程
线程:
线程是比进程还要小的运行单位,一个进程包含多个线程,线程是一个子程序

时间片轮转实现多任务同时进行

线程的创建:
1.创建一个Thread类,或者一个Thread子类的对象
2.创建一个实现Runnable接口的类的对象

Thread类
Thread是一个线程类,位于java.lang包下
在这里插入图片描述
Thread类的常用方法:

在这里插入图片描述

Runnable接口
1.只有一个方法run();
2.Runnable是Java中用以实现线程的接口
3.任何实现线程功能的类都必须实现该接口

一个java文件不能有多个文件

创建线程:

package com.my.thread;
class MyThread extends Thread{
  public void run(){
      System.out.println(getName()+"线程正在进行");
}
}
public class ThreadTest{
    public static void main(String[] args){

       MyThread my=new MyThread();
       //启动线程一个线程只能启动一次
       my.start();
}


}

}

线程是随机获得cpu的使用权

实现Runnable接口是因为:
1.java不支持多继承,接口可以同时实现多个接口
2.不打算算重写Thread类的其他方法


package com.my.runnable;
class MyRunnable implements Runnable{
  @Override
  public void run(){
    System.out.println(Thread.currentThread().getName()+"正在运行");
 
}


}

public class ThreadTest{
    public static void main(String[] args){

      //多个线程可共享内存资源
      MyRunnable mr=new MyRunnable();
      Thread t=new Tread(mr);
        //MyRunnable mr1=new MyRunnable();
      Thread t1=new Tread(mr);
      t.start();
      t1.start();
      
}


}

}

线程的五个状态:
新建(New)
可运行(Runnable)
正在运行(Running)
阻塞(Blocked)
终止(Dead)

线程的生命周期:

在这里插入图片描述

sleep方法应用:
Thread类的方法
public static void sleep(long millis)
作用:在指定的毫秒数内让正在执行的线程休眠(暂停执行)
通过 Thread.sleep(1000); 来调用

join方法应用
Thread类的方法:

  1. public final void join()
    作用:调用它会优先执行,等其执行完成后才会有其他线程执行操作是一种抢占资源的方式
    线程对象.join();
2.public final void join()
作用:等待该线程终止的最长时间为millis毫秒。

有参数话,不管当前线程是否执行完,在时间到了之后其他线程就可以执行,无参数的话是只有该线程执行完后其他线程才可以执行。

线程优先级:
1.java为线程提供了10个优先级
优先级可以用整数1-10表示,超过范围会抛出异常。主线程默认优先级为5
2.优先级常量
-MAX_PRIORITY:线程的最高优先级10
-MIN_PRIORITY:线程的最低优先级1
-NORM_PRIORITY:线程的默认优先级5

线程优先级的相关方法:
public int getPriority() //获取线程优先级的方法
public void setPriority(int newPriority)//设置线程优先级的方法

线程优先级也不是绝对的,会和cpu、操作系统以及开启顺序也有关系

多线程运行问题:
1.各个线程是通过竞争cpu时间而获得运行机会
2.各线程什么时候得到cpu时间,占用多久,是不可预测的
3.线程被暂停是不确定的

同步:
synchronized关键字用在:
成员方法、静态方法、语句块

在这里插入图片描述
保证线程互斥(线程同步),使线程在执行的时候不被打断。保证完整性。

线程间通信:
wait()方法:中断方法的执行,使线程等待
notify():唤醒处于等待的某一个线程,使其结束等待
notifyAll()方法:唤醒所有处于等待的线程,是他们结束等待。

总结创建线程的两种方式:
在这里插入图片描述

使用实现Runnable接口创建线程较好,在Java中不支持多继承,实现接口也有利于数据共享

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值