线程——线程初识之基本概念

线程初识:

  1. 线程是轻量级的进程:

    A. 线程不具备私有空间。

    B. 因为资源共享,父线程结束,则子线程无可苟活。

    a. 因此要使儿女线程正常存活,我们必须确保父亲的安全健康。

    C. 每个线程有标识自己身份的id为tid。

    D. 同一线程家族继承主线程(主进程)的资源。

    E. 若某个线程族受到进程级的打击,则该族线程全部都会被影响。

    F. 不同线程家族之间不产生联系。

  2. 线程只有父子和兄弟。

    只有两代人,即父线程创建的线程是他的子线程,子线程创建的线程是自己的兄弟。因为子线程没有自己的资源,只是继承了父线程的资源。

  3. 线程较之于进程优缺:

    最大优点是快。

    调度

    线程是程序调度的基本单位。

    进程是资源分配的基本单位

  4. 线程为第三方库提供,意味着所有线程在用户空间运行。本来进程时代,所有人都需要父进程管理,而现在,我们会找一个主线程作为小组长,帮助父进程管理。

  5. 查看线程

$ ps aux -H
$ pstree -ap

pstree时{} 包裹的为线程

  1. 所有线程都共用的是父线程的pid,所以调用getpid()时得到的都是主线程即父线程的pid。每一个线程都具有进程pid的身份,每个线程都有,一个pid。

  2. 线程id即tid,只在一个进程空间有效,用以标记每个线程的身份。所以,要对线程做操作的话,用tid进程操作。

  3. 主线程pid存在但是被常被我们使用,我们只使用标识线程身份的tid。

  4. 不同进程内的线程要进行交流的话,其实是以其父亲的进程身份进行通信交流。而不是两个线程直接通信。

  5. 各进程之间相同tid并没有什么必要联系。

  6. syscall(SYS_gettid);
    syscall 层次特别低,最接近于内核,移植性特别差。上述调用可以得到自己的tid

线程可以通过以下三种方式创建: 1. 实现Runnable接口,并实现run()方法。首先,自定义一个类并实现Runnable接口,然后在该类中实现run()方法。接下来,创建Thread对象,并将实现了Runnable接口的对象作为参数实例化该Thread对象。最后,调用Thread的start()方法来启动线程。这种方式的代码示例可以参考引用\[1\]中的代码。 2. 继承Thread类,重写run()方法。Thread类本质上也是实现了Runnable接口的一个实例,它代表了一个线程的实例。通过继承Thread类并重写run()方法,然后调用start()方法来启动线程。这种方式的代码示例可以参考引用\[2\]中的代码。 3. 使用匿名内部类实现多线程。可以直接在创建Thread对象时使用匿名内部类来实现多线程。这种方式可以简化代码,但只能使用一次。具体的代码示例可以参考引用\[3\]中的代码。 总结起来,多线程的创建方式有实现Runnable接口、继承Thread类和使用匿名内部类。每种方式都有其适用的场景,可以根据具体需求选择合适的方式来创建多线程。 #### 引用[.reference_title] - *1* *2* [初识线程——创建多线程的三种方式](https://blog.csdn.net/pizssn/article/details/106382025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [多线程创建的三种方式](https://blog.csdn.net/qq_31780525/article/details/54338341)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值