多线程

多线程

进程:程序及其数据在处理机器上 顺序执行发生的活动。是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的独立单位

可以将一个运行的exe 理解成一个“”“进程” 受操作系统管理的基本运行单元。

线程:比如QQ.exe运行时就有多个子任务在同时运行。

在这里插入图片描述
多线程是异步的,线程被调用是随机的。

继承Thread 类实现run方法
实现Runnable接口 ,实现run方法。
特别的: Thread implements Runnable

1.2.3实例变量与线程安全

实例变量针对其他线程有共享不共享之分

在这里插入图片描述

public class Mythread extends Thread {
    private int count = 5;

    public Mythread(String name) {
        super();
        this.setName(name);//设置线程名字
    }

    @Override
    public void run() {
        super.run();
        while (count > 0) {
            try {
                Thread.sleep(1000);
                count--;
                System.out.println("当前线程名-->" + this.currentThread().getName() + "\t" + "当前数量count-->" + count);

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
               }
    }
}

class run {
    public static void main(String[] args) {
        Mythread a = new Mythread("A");
        Mythread b = new Mythread("B");
        Mythread c = new Mythread("C");
        a.start();
        b.start();
        c.start();

    }
}

在这里插入图片描述

加锁的这段代码称之为互斥区

public  class Mythread1 extends  Thread{
    
    private  int count = 5;

    @Override
   synchronized public void run() {
        super.run();
        count--;
        System.out.println("当前线程名-->" + this.currentThread().getName() + "\t" + "当前数量count-->" + count);
    }
}

class run{
    public static void main(String[] args) {

        Mythread1 mythread1 = new Mythread1();
        //它的构造方法
        Thread a = new Thread(mythread1, "A");
        Thread b = new Thread(mythread1, "B");
        Thread c = new Thread(mythread1, "C");
        Thread d = new Thread(mythread1, "D");
        a.start();
        b.start();
        c.start();
        d.start();
    }

}

执行结果

当前线程名-->A	当前数量count-->4
当前线程名-->D	当前数量count-->3
当前线程名-->C	当前数量count-->2
当前线程名-->B	当前数量count-->1

getId()
在这里插入图片描述

判断线程是否停止状态

在这里插入图片描述

能停止线程的异常

在这里插入图片描述

使用return 停止线程

在这里插入图片描述

暂停线程恢复线程

表示该线程还可以恢复

在这里插入图片描述

守护线程

在这里插入图片描述

基础知识

进程: QQ.exe 运行起来的程序称之为一个进程。
线程:程序里,不同执行路径
run()方法,是串行执行
调用start()是并行执行
sleep() 让当前线程睡眠,
yield()让出一下cup,其他线程可不可以抢到cpu不管。
join(),保证所有线程按照顺序执行完。
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值