线程(上)

线程(Thread)

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

关于线程有以下一些知识点

并行:两个事件,在同一时刻都在发生。
并发:两个事件,在同一时间段内都在发生,但是精确到某个时间点,只有一个发生。
进程:正在运行的的程序
线程:进程中完成某个特点的功能的单元

进程与线程的区别
1.线程属于进程,一个进程可以有多个线程,也就是多线程的进程
2.每个进程都有独立的内存空间
3.进程中每个线程拥有独立的栈和堆

线程调度
CPU在多个线程种快速切换,其分为两种:
分时调度:每个线程分配平均的时间
抢占式调度:每个线程随机分配CPU的执行时间

拓展
我们买电脑的时候都听说过处理器,单核处理,双核处理,四核处理,这就是说的可以同时处理几个线程。
有的人问了,那我单核的处理器也可以同时进行好几个线程啊,这是因为CPU在这些线程中进行很快速的切换,人类根本是感觉不出来的,所以以为的是多个线程在进行。

还有就是内存,这是我之前也遇到的情况和大家分享一下,就是好多人说,我的电脑处理器很好,为什么经常死机或者运行东西的时候卡住?这就涉及到内存了,进程在运行的时候是需要占用电脑内存的,这个和硬盘的内存是不一样的,这里说的是运行内存,我之前就是买了个8g的内存条插上之后电脑就变得比以前快好多,所以大家如果有类似的问题可以看看是不是和我一样。

线程类Thread的介绍

构造:
public Thread();不指定线程的名字(线程有默认名字)
public Thread(String name);指定线程名字
public Thread(Runnable target);
public Thread(Runnable target,String name);
成员:
public void run();线程自动执行run,线程的任务代码
public void start();启动线程
public static void sleep(long time);让当前线程"休眠"time毫秒
public static Thread currentThread();获取当前线程对象

获取线程名字的通用方法:

Thread.currentThread().getName();
public String getName();获取线程名字
public void setName(String name); 修改线程名字

创建新的线程方式一
1.继承
2.重写run方法
3.创建子类对象
4.启动子类对象,调用start

//1.继承
public class MyThread extends Thread{
//2.重写run方法
    @Override
    public void run() {
//循环1
        for (int i = 0; i < 100; i++) {
            System.out.println("吃饭" + i);
        }
    }
}



public class ThreadDemo {
    public static void main(String[] args) {
//创建线程对象
        MyThread mt = new MyThread();
//调用start方法
        mt.start();
//循环2
        for (int i = 0; i < 100; i++) {
            System.out.println("睡觉" + i);
        }

    }
}

方式二
1.创建一个实现类 实现 Runnable
2.实现类 重写 run方法(run里面写任务代码)
3.创建 实现类对象
4.创建Thread对象,并传入实现类对象
5.启动Thread对象

//创建一个实现类 实现 Runnable
public class Runnable implements Runnable {
//实现类 重写 run方法(run里面写任务代码)
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName()+"..."+i);
        }
    }
}
public class ImplementsThreadDemo {
    public static void main(String[] args) {
//创建一个实现类 实现 Runnable
//实现类 重写 run方法(run里面写任务代码)
//创建 实现类对象
        Runnable mr = new Runnable();
//创建Thread对象,并传入实现类对象
        Thread t= new Thread(mr,"小明");
//启动Thread对象
        t.start();
    }
}

两种创建线程方式的比较
实现方式比继承方式好!
1.继承方式只能是单继承,而实现弥补了单继承的不足
2.继承方式线程和任务是紧密相连的,实现方式线程和任务是不需要紧密相连的
3.以后我们用到线程池,能接收任务对象
(Runnable/Callable),不能接收线程对象
综上所述,实现方式比较好,Java也强列推荐使用实现方式创建线程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值