多线程基础知识

多线程基础知识:

什么是多线程

当你在做一个表格或者是一个ptt的时候,你的电脑可以在后台放着音乐,同时你还上了QQ与微信。尽管你的计算机只有一个cpu,但是你的cpu却可以使这些线程并发执行。从而使芯片性能得到提升。

什么是进程,什么是线程

进程

进程是指一个计算机内存中运行的应用程序,每个进程都有一个独立的内存空间。
打开任务管理器可以看到每个线程占有独立的内存空间。可通过结束任务按钮结束线程,释放内存空间。
每个线程所占独立的内存空间

线程

线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干执行路径又可以划分成若干个线程。线程是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行. 一个进程最少有一个线程。当进程中一个线程都不存在时那它就被释放掉了。

并行与并发

并行

不同的代码块交替执行,交替做不同的事情。就好比在吃饭的时候来个电话,先停下吃饭去接电话。电话结束了再吃饭。

并发

不同的代码块同时执行。同一时间做2两件或多件事情。就好比电脑可以一边听音乐一边下载视频。

同步与异步

同步异步在请求上。

同步

就好比数据同步一样,前台提交了一个数据到数据库中。数据库刷新后看到这条数据。同步是有明显的先后执行顺序的。

异步

当你注册一个账号时,填写完用户名。当你鼠标离开这个表后,系统会提交一个请求到数据库中来检查用户名是否重复。重复的时候会返回给前台信息,让有用户知道用户名重复。这条请求不影响整个系统程序的运行。这个异步请求可以和整个程序同时运行并且互补影响。

wait()与sleep()的区别

sleep()

sleep()是定时休眠;当一段事件后,sleep会自动唤醒,并执行程序。就好比如人睡一定时间后会自定醒来。

wait()

wait()是唤醒休眠;进入了深层睡眠,他只有在别人唤醒后才能执行。就像美国队长被冰封,通过别人解冻唤醒后才能够醒来。无人唤醒将会一直沉睡下去。

多线程中的区别

而在多线程中,当抱有锁时执行睡眠, wait 会将锁抛出睡眠,而sleep会持有锁睡眠。也就是说不用等待wait的唤醒后面程序可以正常运行。而sleep需要等待程序的唤醒执行将锁抛出后,持有锁的程序才能正常运行。

线程的六大状态

初始化状态(new)

线程刚刚创建的时候处于此状态。

就绪状态(runnable)/运行中状态(running)

此线程有资格运行任务,但是cpu没有分配到他。/执行中的线程处于此状态。

阻塞状态(blocked)

被阻塞等待监听器锁定的线程处于此状态。

等待(waiting)

cpu不会给此线程分配资源,此线程要被唤醒,否则会处于无限期的等待状态。(wait)

超时等待(timed waiting)

cpu不会给此线程分配资源,但是他的等待是有时间限制的。(sleep)

中止状态(terminated)

线程的run()任务执行完成,线程失去生命。

用java代码实现简单多线程程序

支线程

public class r1 implements Runnable{
    @Override
    public void run() {
        //线程的任务
        for (int i = 0; i <10;i++ ){
            System.out.println("支线程"+i);
        }
    }
}

主线程

public class r2 {
    /**
     * 多线程任务
     */
    public static void main(String[] args) {
        //创建一个任务对象
        r1 r1 = new r1();
        //创建一个线程,并为其分配一个任务
        Thread thread = new Thread(r1);
        //执行这个线程
        thread.start();
        //主线程
        for (int i = 0; i <10;i++ ){
            System.out.println("主线程"+i);
        }
    }
}

运行结果:
在这里插入图片描述
线程的执行是抢占式。谁抢到执行程序在释放掉后,在进行抢占执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值