初识多线程 (创建,属性)先扫个盲

先来两句经典语录
进程是资源分配的最小单位
线程是资源调度的最小单位
什么意思呢?比如说银行来了很多顾客,忙不过来了,这时行长张三叫来了李四王五,这时李四王五张三就是线程,人是张三叫的,他就是主线程,来的那一个个顾客就是一个个进程。进程和线程的最大区别就是线程间是数据共享的。

什么时候用线程?
1、有可能提升速度的时候(原理:多一个调度单位,就多一个机会抢到cpu)
2、线程有极限,如果操作系统中已经有太多你的线程,那在添加线程意义也就不大了
注意:本身创建线程销毁线程也需要时间,所以不能使劲叫人,很简单,叫工人是需要开工资的。

Thread t= new MyThread();
什么时候线程t才会真的运行起来?因为t这个线程被分配了CPU资源,结合进程的调度知识,
1、cpu上现在线程被调度下来了
2、t被从就绪队列中选中了
3、t被调度到CPU上了,
那什么时候线程可能会被从cpu上调度下来的五种情况“
1、被高优先级抢了
2、执行结束
3、在等IO
4、主动放弃
5、时间片耗尽

线程的创建

一、继承Thread类
class MyThread extends Thread{
    @Override
    public void run(){
        //这里放希望线程执行的代码
    }
}
二、实现Runnable接口
class MyThread implements Runnable{
    @Override
    public void run(){
        //这里放希望线程执行的代码
    }
}

创建的实际是一个对象,就会有很多属性

//Thread.currentThread();来获取当前线程的引用

public class shuXing {
    private static void printShuXing(){
        Thread t=Thread.currentThread();
        System.out.println(t.getId());//线程id
        System.out.println(t.getName());//线程名字
        System.out.println(t.getState());//线程的状态
        System.out.println(t.getPriority());//设置线程优先级
        System.out.println(t.isDaemon());//是不是后台线程
        System.out.println(t.isAlive());//判断线程是否活着
        System.out.println(t.isInterrupted());//现在是否被终止
    }
    public static void main(String[] args) {
        Thread t=new Thread(()->{
            printShuXing();
            try {
                //主动放弃cpu这么长时间再重新回来;
                Thread.sleep(10000000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        t.start();
    }
}

运行结果
11
Thread-0
RUNNABLE
5
false
true
false

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值