Java基础——多线程

1、进程 、程序 、线程

  1. 程序:是一种静态的概念,能完成某种功能,是一种固定的逻辑和数据的集合,存储在电脑硬盘内,比如.exe执行程序和.class字节码;
  2. 进程:是一种动态的概念,是程序的一次运行,或者是正在运行的程序,存储在电脑内存中,会消耗cpu;
  3. 线程:是一条独立执行任务的路径。

进程和线程的关系:

  1. 一条进程中至少包含有一条或者多条线程,一条线程必须存在于一条进程中,线程不可能脱离进程独立存在;
  2. 进程具有独立分配cpu资源的权力,线程不行,线程只能共享一条进程的资源。

并行和并发

  1. 并行:是多个任务同时执行,在有多个cpu的前提下,可以理解是多个任务都在被cpu处理
  2. 并发:多个任务同时发起或者多个任务同时申请执行,只有一个cpu,cpu只要执行切换得足够快,就会导致像是多个任务同时在执行得错。

多线程

第一种方式

  1. 定义一个类继承Thread类,
  2. 重写Thread类的run()方法,在方法中定义要实现的功能
  3. 创建自定线程类的对象,
  4. 调用线程的start方法,启动线程
  5. public class Demo04_多线程的第一种设计方式之继承 {

             public static void main(String[] args) {

                      //创建自定义的线程对象

                      MyThread mt = new MyThread();

                      //调用start()方法,开启线程

                      mt.start();

                     

                      for (int i = 1; i <= 100; i++) {

                               System.out.println(i + "###main");

                      }

             }

    }

     

    //定义一个类,继承Thread

    class MyThread extends Thread {

             //重写run方法,定义线程运行的内容

             @Override

             public void run() {

                      for (int i = 1; i <= 100; i++) {

                               System.out.println(i + "...MyThread");

                      }

             }

    }

第二种方式

  1. 定义一个任务类,实现runnable接口
  2. 重写runnable接口中的run方法,用来定义任务的内容
  3. 创建任务类的对象
  4. 创建一个新的Thread对象,传入任务类对象(在对象的构造方法中创建匿名对象任务类)
  5. 调用start方法,启动线程

public class Demo05_多线程的第二种设计方式之实现 {

         public static void main(String[] args) {

                  //创建任务类对象

                  MyTask mt = new MyTask();

                  //创建线程Thread类的对象

                  Thread t = new Thread(mt);

                  //开启线程

                  t.start();

                 

                  for (int i = 1; i <= 100; i++) {

                           System.out.println(i + "####main");

                  }

                 

         }

}

 

//定义一个任务类,实现Runnable接口

class MyTask implements Runnable {

         //重写run方法,定义任务的内容

         @Override

         public void run() {

                  for (int i = 1; i <= 100; i++) {

                           System.out.println(i + "...MyTask");

                  }

         }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值