隐藏

JAVA多线程
2022年 02月 17 日

Calvin

  1. 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合,一段静态的代码。
  2. 进程(process)是程序的一次执行过程,或是正在运行的一个程序。
    进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域
  3. 线程:进程可进一步细化为线程,是一个程序内部的一条执行路径,
    线程作为调度和执行的单位。

    ---

    多线程实现方法

    创建多线程的方式一:继承Thread类

    1. 创建一个继承于Thread类的子类
    2. 重写Thread类的run() --> 将此线程执行的操作声明在run()中(注意!启动多线程时不是调用run方法!)
    3. 创建Thread类的子类的对象
    4. 通过此对象调用start()

Thread的相关方法:

  • void start(): 启动线程,调用当前对象的run()方法
  • run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中
  • run(): 线程在被调度时执行的操作(可以理解为类中的构造器)
  • sleep(long millitime):让当前线程“睡眠”指定的millitime毫秒。在指定的millitime毫秒时间内,当前线程是阻塞状态。
  • yield():释放当前cpu的执行权
  • getName():获取当前线程的名字
  • setName():设置当前线程的名字
  • String getName(): 返回线程的名称
  • void setName(String name):设置该线程名称
  • join():当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完为止
  • static void sleep(long millis):(指定时间:毫秒)(令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队。)
  • stop(): 强制线程生命期结束,不推荐使用。
  • boolean is Alive():返回boolean,判断线程是否还活着
  • setPriority(int newPriority) :改变线程的优先级(1-10,数字越高优先级越高(高优先级的线程要抢低优先级的线程的cpu的执行权,只是概率。并不是高优先级先执行完,在执行低优先级))

创建多线程的方式二:实现Runnable接口

  1. 创建一个实现了Runnable接口的类
  2. 实现类去实现Runnable中的抽象方法:run()
  3. 创建实现类的对象
  4. 将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
  5. 通过Thread类的对象调用start()

public class Jicheng extends Thread{
//继承多线程实现类
  public static int i=100;
  public void run() {
      for (; i>0; i--) {
          System.out.println(Thread.currentThread().getName()+"卖出了一张,还剩"+i);

      }
  }
}

public class Test {
  public static void main(String[] args) {
      Jicheng c=new Jicheng();
      Jicheng e=new Jicheng();
      Jicheng w=new Jicheng();
      //创建继承的多线程实现类的对象
      c.start();
      //使用  对象名.start  启动线程
      e.start();
      w.start();
      }
  }

------------------------------------------------------------------------------------------------

public class Jiekou implements Runnable{
//(通过实现Runnable的方法实现多线程)
public static int i=100;
  @Override
  public void run() {
      for (;i>0;i--){
          System.out.println(Thread.currentThread().getName()+"卖出了一张票,还剩"+i);
     }
  }
}


public class Test {
  public static void main(String[] args) {
      Jiekou c=new Jiekou();
      //(创建实现Runnable接口的子类对象)
      
       new Thread(c).start();
      //(将创建的Runnable接口的子类对象,作为参数,传递给thread类的构造器并调用start()方法)
      new Thread(c).start();
      new Thread(c).start();
  }
}

JAVA多线程

  1. 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合,一段静态的代码。
  2. 进程(process)是程序的一次执行过程,或是正在运行的一个程序。
    进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域
  3. 线程:进程可进一步细化为线程,是一个程序内部的一条执行路径,
    线程作为调度和执行的单位。

    ---

    多线程实现方法

    创建多线程的方式一:继承Thread类

    1. 创建一个继承于Thread类的子类
    2. 重写Thread类的run() --> 将此线程执行的操作声明在run()中(注意!启动多线程时不是调用run方法!)
    3. 创建Thread类的子类的对象
    4. 通过此对象调用start()

Thread的相关方法:

  • void start(): 启动线程,调用当前对象的run()方法
  • run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中
  • run(): 线程在被调度时执行的操作(可以理解为类中的构造器)
  • sleep(long millitime):让当前线程“睡眠”指定的millitime毫秒。在指定的millitime毫秒时间内,当前线程是阻塞状态。
  • yield():释放当前cpu的执行权
  • getName():获取当前线程的名字
  • setName():设置当前线程的名字
  • String getName(): 返回线程的名称
  • void setName(String name):设置该线程名称
  • join():当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完为止
  • static void sleep(long millis):(指定时间:毫秒)(令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队。)
  • stop(): 强制线程生命期结束,不推荐使用。
  • boolean is Alive():返回boolean,判断线程是否还活着
  • setPriority(int newPriority) :改变线程的优先级(1-10,数字越高优先级越高(高优先级的线程要抢低优先级的线程的cpu的执行权,只是概率。并不是高优先级先执行完,在执行低优先级))

创建多线程的方式二:实现Runnable接口

  1. 创建一个实现了Runnable接口的类
  2. 实现类去实现Runnable中的抽象方法:run()
  3. 创建实现类的对象
  4. 将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
  5. 通过Thread类的对象调用start()

public class Jicheng extends Thread{
//继承多线程实现类
  public static int i=100;
  public void run() {
      for (; i>0; i--) {
          System.out.println(Thread.currentThread().getName()+"卖出了一张,还剩"+i);

      }
  }
}

public class Test {
  public static void main(String[] args) {
      Jicheng c=new Jicheng();
      Jicheng e=new Jicheng();
      Jicheng w=new Jicheng();
      //创建继承的多线程实现类的对象
      c.start();
      //使用  对象名.start  启动线程
      e.start();
      w.start();
      }
  }

------------------------------------------------------------------------------------------------

public class Jiekou implements Runnable{
//(通过实现Runnable的方法实现多线程)
public static int i=100;
  @Override
  public void run() {
      for (;i>0;i--){
          System.out.println(Thread.currentThread().getName()+"卖出了一张票,还剩"+i);
     }
  }
}


public class Test {
  public static void main(String[] args) {
      Jiekou c=new Jiekou();
      //(创建实现Runnable接口的子类对象)
      
       new Thread(c).start();
      //(将创建的Runnable接口的子类对象,作为参数,传递给thread类的构造器并调用start()方法)
      new Thread(c).start();
      new Thread(c).start();
  }
}

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论