Java多线程(一)

一、进程、线程、多线程

        进程:电脑中每一个单独运行的程序,都是一个进程。进程是系统进行资源分配的独立实体,且每个进程拥有独立的地址空间。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。

        线程:是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程中至少包含一个线程。

        多线程:一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务(交替占用CPU,并非真正的并行执行线程每次执行时长由分配的CPU时间片长度决定)。多线程同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。

        优点:

                1.使用多线程可以把程序中占据时间长的任务放到后台去处理,如图片、视屏的下载;

                2.发挥多核处理器的优势,并发执行让系统运行的更快、更流畅,用户体验更好。

                3.充分利用CPU资源,简化编程模型。

        缺点:

                1.大量的线程降低代码的可读性;

                2.更多的线程需要更多的内存空间;

                3.当多个线程对同一个资源出现争夺时候要注意线程安全的问题。

二、主线程

  • main()方法即为主线程入口
  • 产生其他子线程的线程
  • 必须最后完成执行,因为它执行各种关闭动作

Thread类:Java提供了java.lang.Thread类支持多线程编程

显示主线程名:

public static void main(String[] args) {
    // 获取 主线程信息
    Thread t =  Thread.currentThread();
    // 通过getName() 获取当前主线程名称
    System.out.println(t.getName());
    t.setName("MyThread");// 为当前的主线程 命名
    System.out.println(t.getName());
}

三、线程的创建和启动

创建一个线程的两种方法:

1. 通过继承Thread类来创建线程:

  • 定义MyThread类继承Thread类
  • 重写run()方法,编写线程执行体
  • 创建线程对象,调用start()方法启动线程
public class MyThread_1 extends Thread{
    // 重写 run() 方法  自己定义运行时的内容
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName()+"-"+i);
        }
    }
}
public class DemoB {
    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName());
        MyThread_1 myThread_1 = new MyThread_1();
        myThread_1.setName("测试A-");

        MyThread_1 myThread_2 = new MyThread_1();
        myThread_2.setName("测试B-");
        // 启动MyThread_1 线程
        // 当调用线程子类的  start(); 方法 启动了 线程类  执行 run()方法
        myThread_1.start();
        myThread_2.start();
        // 直接调用run()方法
//        myThread_1.run();
//        myThread_2.run();
    }
}

问题:启动线程是否可以直接调用run()方法?

不可以。如果直接调用run方法,那么进程中就只有主线程一条执行路径。调用start()方法,多条执行路径

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值