关于多线程

关于多线程

***关于多线程的基本理解***

1:首先我们得理解任务,线程,cpu之前的关系?~
2:任务就是我们执行当前想法,线程就是这个需求的执行过程,cpu就是去执行这个线程。~
3:现在是有多个任务,多个线程,需要cpu去执行,怎么去处理?如果是程序中是单线程,那么多个线程过来得排队,这样影响执行效率,在业务需求没有多的关联关系,我们可以使用多线程。~
4:解决办法,线程池,多个任务在线程池外等候,当实例了一个线程池,在线程池调度中心,可以接受外部等候的线程过来执行,执行之前线程池中的线程是阻塞的,在调度中心外部某个任务和线程池中线程有对应关系后,这个线程就去执行这个任务,这个时候有多个线程,多个任务,就可以实现多线程对多任务同时处理,实现多线程。

那我们是不是觉得线程池中的线程越多越好呢?
显然不是的,我们程序的执行都是在jvm中开辟一道内存空间,而我们这个内容空间是存在某在一个服务器或者pc机上,是我们本身的资源,资源越多速度肯定会慢下来,而且我们在实例化一个线程池之后,jvm开辟的内存空间就确定了,显然线程池里面的运输线程越多不一定越好。
多线程状态下cpu是怎么执行的?
在多线程状态下,cpu执行是随机的,它不单独执行哪个线程先执行,当我们在代码中由上而下.start()时,其执行也不是我们程序的执行顺序,而是cpu随机启用执行的,在使用多线程技术时,多线程的运行结果和多线程的执行顺序或者调用顺序是无关的。

	***线程的基本概念、线程的基本状态及状态之间的关系***
线程,有时称为轻量级进程,是CPU使用的基本单元;它由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、		数据段和其他操作系统资源(如打开文件和信号)。
线程有四种状态:新生状态、可运行状态、被阻塞状态、死亡状态。~
***什么是线程,线程和进程的区别是什么***
~
线程,程序执行流的最小执行单位,是行程中的实际运作单位,经常容易和进程这个概念混淆。那么,线程和进程究竟有什么区别呢?首先,进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程,而线程,是运行中的实际的任务执行者。可以说,进程中包含了多个可以同时运行的线程。


1.锁定实例~
```java
public class SynchronizeDemo {
 public void doSth1() {
   /**
   * 锁对象实例 synchronizeDemo
   */
       synchronized (synchronizeDemo){
        try {
                System.out.println("正在执行方法");
                Thread.sleep(10000);
                System.out.println("正在退出方法");
            } catch (InterruptedException e) {
                e.printStackTrace();
               }
              }
         }~
    
     public void doSth2() {
        /**
         * 锁对象实例 this 等同于 synchronizeDemo
         */
        synchronized (this){
            try {
                System.out.println("正在执行方法");
                Thread.sleep(10000);
                System.out.println("正在退出方法");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值