什么是线程?以及线程的总结。(十小点1700字)

本文介绍了程序、进程和线程的基本概念,创建线程的三种方式(Thread继承、Runnable实现、Callable接口),以及两者区别。讨论了线程的优先级、状态转换和多线程的优缺点。还详细讲解了线程同步的重要性,对比了synchronized关键字和Lock接口的异同,并阐述了线程死锁和线程间通信的方法。
摘要由CSDN通过智能技术生成

(1)什么是程序,进程和线程?

 (2)创建线程的三种方式?

(3) 继承Thread类来创建线程和实现Runable接口创建线程的区别?

 (4)线程的方法(线程的优先级别)​编辑

(5)线程的状态以及图解

(6)多线程的概念 ,优点,缺点

(7)线程同步的概念 

​编辑 (8)关键字synchronized和接口lock

 (9)线程死锁

(10)线程通信

(1)什么是程序,进程和线程?

        (i)程序可以大概理解为电脑安装的文件,比如说英雄联盟啊之类的。

          (ii)  进程运行时候的程序,是操作系统分配的最小内存单位,一个进程可以启动多个线程。

        (iii)线程是进程中的一部分,cpu的最小执行单位。

 (2)创建线程的三种方式?

        (i)继承Thread类

        (ii)实现Runable接口

        (iii)实现Callable接口

(3) 继承Thread类来创建线程和实现Runable接口创建线程的区别?

(1)继承Thread类创建线程的方式本质上就是创建了一个线程对象。可以直接new一个然后start。

(2)实现Runable创建线程的方式,实际上是创建了一个线程任务,不是一个线程,还需要再new一个线程,记得要把线程的任务扔进去,这也就意味着创建的线程们都拥有同一个线程任务,共享同一份资源,非常适合多线程处理相同的资源。

public class MainTest {
    public static void main(String[] args) {
        //创建线程事件
        SaveThread saveThread = new SaveThread();
        //创建两个相同事件的线程
        Thread a = new Thread(saveThread);
        Thread b = new Thread(saveThread);
        a.start();
        b.start();

    }
}

 (4)线程的方法(线程的优先级别)

 (1)线程的优先级别不是绝对的,不一定对线程的优先级别越高就一定对cpu的抢占权越高

          线程的优先级别默认是5,最高是10,最低是1.。

 (2)如果在主线程中先设置线程优先级别为8,那么主线程的剩下所有子线程的优先级别都是8,而不是默认值5。

 (3)Unix系统使用的是时间片算法,而Windows则属于抢占式的。

(5)线程的状态以及图解

        (1)新建:当一个线程被new出来的时候,新生的线程对象属于新建状态

        (2)就绪:当一个线程被start的时候,会进入线程队列等待。

        (3)运行:当已经就绪的线程被调度获取cpu资源的时候会进入运行状态,run方法定义了线程的功能

        (4)阻塞:线程被认为挂起,或者线程内部有执行输入或者输出的方法的时候线程会阻塞。

        (5)死亡:线程完成工作或者被强制性终止就会死亡

 

(6)多线程的概念 ,优点,缺点

(概念) 在一个程序中可以同时运行多个不同的线程来执行任务,意思就是允许单个程序创建多个并行线程来完成各自的任务

(优点)提高程序的响应,提高cpu的利用率,改善程序结构,将复杂的任务分为多个线程来执行。

(缺点)线程越多占用内存越多,线程之间共享资源会相互影响。意思就是多个线程再对用一资源同时进行操作的时候,会出现严重的错误。

(7)线程同步的概念 

多个线程同时访问同一个资源的时候,可能会引起冲突 ,为了避免这种情况的发生,我们需要给线程加锁

 (8)关键字synchronized和接口lock

 (1)synchronized是关键字,可以用来修饰同步代码块或者方法,该执行原理是再jvm层面上,但是lock是一个类,通过方法来对锁来进行控制

(2)synchronized在遇到异常的时候会隐式释放锁,安全性比较高,lock遇到异常的时候不会自动释放锁,所以要在finally里面实现unlock主动释放锁。从此避免线程死锁。

(3)在面对大量数据的时候,lock的性能更加优越。

 (9)线程死锁

不同的线程分别占用对方需要的同步资源,都在等待对方放弃自己需要的同步资源,就会形成线程死锁

(10)线程通信

(1).wait一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。

(2).notify一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。.

(3)notifyAll一旦执行此方法,就会唤醒所有被wait的线程。

注意:.wait(),notify(),notifyAll()三个方法必须使用在同步代码块或同步方法中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值