线程初窥:

一些基本概念:

1.进程与线程:
  • 进程: Process,是程序运行的实例。任务管理器有进程栏。

  • 线程:Thread,是程序向操作系统申请资源(如内存空间和文件句柄)的基本单位。是进程中独立执行的最小单位,CPU的最小调度单元。

2.java内存划分:
  • 堆:

    • 存放new的对象和数组

    • 可以被所有线程共享

  • 栈:

    • 存放基本变量类型(会包含该基本类型的具体值)

    • 引用对象的变量(存放该引用在堆里面的具体地址)

    • 线程私有。

  • 方法区:

    • 包含所有的class和static变量

    • 所有线程共享

3.创建线程的两种方式:
  • 创建Thread的子类:基于继承(Inheritance)的技术。

  • 以Runnable接口实例为构造器参数直接通过new创建Thread实例:基于组合(Composition)的技术。耦合性(Coupling)相对上一种更低,推荐优先选用。

4.Thread类常用方法:
方法功能备注
static Thread currentThread()返回当前代码的执行线程(对象)同一段代码的Thread.currentThread()的调用,其返回值可能对应不同的线程(对象)
void run()用于实现线程的任务处理逻辑一般由Java虚拟机直接调用,程序不应该调用该方法。
void start()启动相应线程该方法的返回不代表相应线程已经启动。一个Thread的start方法只能被调用一次,多次调用会抛出异常。
void join()等待相应线程运行结束线程A调用线程B的join方法,那么线程A会被暂停,直到线程B运行结束。
static void yield()使当前线程主动放弃对处理器的占用,可能导致当前线程被暂停不可靠。该方法被调用时当前线程可能仍然继续运行。
static void sleep(Long millis)使当前线程休眠(暂停运行)指定的时间
5.守护线程和用户线程:

通过线程的daemon属性表示:该属性默认值与该线程父线程的属性值相同。

  • 守护线程:不会影响Java虚拟机的正常停止。如垃圾回收线程。

  • 用户线程:会阻止Java虚拟机的正常停止(无法阻止强制停止)。

6.线程的生命周期:



参考: Java多线程编程实战指南(核心篇)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值