线程

深入理解:进程与线程的交互与区别
本文详细阐述了进程与线程的概念,包括它们的区别(如资源分配和执行单位),包含关系,内存分配,以及线程的创建方式。同时涵盖了线程生命周期和常用方法,如wait、sleep、yield和interrupt等。

线程与进程的概念,关系

线程:进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。

进程:一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。

线程与进程的关系:根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位

                                包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分。

                                内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

                                影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。

                                执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者都可以并发执行

线程的创建:

1)继承Thread类创建线程

public class MyThread extends Thread{//继承Thread类

  public void run(){

  //重写run方法

  }

}

public class Main {

  public static void main(String[] args){

    new MyThread().start();//创建并启动线程

  }

}

 2)实现Runnable接口创建线程

public class MyThread2 implements Runnable {//实现Runnable接口

  public void run(){

  //重写run方法

  }

}

public class Main {

  public static void main(String[] args){

    //创建并启动线程

    MyThread2 myThread=new MyThread2();

    Thread thread=new Thread(myThread);

    thread().start();

    //或者    new Thread(new MyThread2()).start();

  }

}

线程的生命周期及常用方法解析:

生命周期:一个线程不是被创建了马上就开始执行,也不是一直处于执行状态。在线程的整个生命周期中会经历五种状态(新建(NEW),就绪(Runnable),阻塞(Blocked)和销魂(Thrminated))

线程常用方法:

  • wait
    作用:强迫一个线程等待,线程进入WAITING状态,只用等待另外线程的通知或被中断才会返回;
    注意:调用wait()方法后,会释放对象的锁。因此,wait方法一般用在同步方法或同步代码块中。

  • Sleep
    作用:强迫一个线程睡眠N毫秒,线程进入TIMED_WAITING状态,只有等待另外线程的通知或者被中断才会返回;
    注意:与wait方法不同的是sleep不会释放当前占有的锁

  • yield
    作用:使当前线程让出CPU执行时间片,与其他线程一起重新竞争CPU时间片;
    注意:一般情况下,优先级高的线程有更大的可能性成功竞争得到CPU时间片,但这不是绝对的,有的操作系统对线程优先并不敏感。

  • interrupt
    作用:中断一个线程,其本意是给这个线程一个通知喜好,会影响这个线程内部的一个中断标识位;
    注意:
    (1)interrupt不会改变线程的状态,既不会强制线程进入阻塞,终止等状态;
    (2)若线程处于TIMED-WAITING状态,这时调用interrupt方法,会抛出InterruptException,从而使线程提前结束TIMED-WAITING状态;
    (3)许多申明抛出InterruptException的方法,抛出异常前,都会清除中断标识位,所以抛出异常后,调用isInterrupt方法会返回false;
    (4)可以调用thread.interrupt方法,在线程的run方法内部可以根据thread。isInterrupt的值来优雅的终止线程。

  • notify
    作用:Object类中的notify方法,唤醒在此对象监视器上等待的单个线程;

基于粒子群优化算法的p-Hub选址优化(Matlab代码实现)内容概要:本文介绍了基于粒子群优化算法(PSO)的p-Hub选址优化问题的研究与实现,重点利用Matlab进行算法编程和仿真。p-Hub选址是物流与交通网络中的关键问题,旨在通过确定最优的枢纽节点位置和非枢纽节点的分配方式,最小化网络总成本。文章详细阐述了粒子群算法的基本原理及其在解决组合优化问题中的适应性改进,结合p-Hub中转网络的特点构建数学模型,并通过Matlab代码实现算法流程,包括初始化、适应度计算、粒子更新与收敛判断等环节。同时可能涉及对算法参数设置、收敛性能及不同规模案例的仿真结果分析,以验证方法的有效性和鲁棒性。; 适合人群:具备一定Matlab编程基础和优化算法理论知识的高校研究生、科研人员及从事物流网络规划、交通系统设计等相关领域的工程技术人员。; 使用场景及目标:①解决物流、航空、通信等网络中的枢纽选址与路径优化问题;②学习并掌握粒子群算法在复杂组合优化问题中的建模与实现方法;③为相关科研项目或实际工程应用提供算法支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐段理解算法实现逻辑,重点关注目标函数建模、粒子编码方式及约束处理策略,并尝试调整参数或拓展模型以加深对算法性能的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值