Java多线程学习笔记

进程和线程的概念

  1. 进程:程序(任务)的执行过程。

    持有资源(共享内存,共享文件)和线程

  2. 线程:系统中最小的执行单元。

    同一进程中有多个线程。
    线程共享进程的资源。

线程的交互:互斥/同步

Java语言对线程的支持示意图:
Java语言对线程的支持示意图


Thread常用方法:

线程的创建:Thread(String name) / Thread(Runnable target)

线程的方法:

  • 启动线程:void start()
  • 线程休眠:void sleep(long millis)
  • 使其他线程等待当前线程终止:void join(long millis)
  • 当前运行线程释放处理器资源:void yield()

获取当前线程引用:static Thread currentThread()

停止线程的方法:

  1. stop方法(不推荐)
  2. 使用退出标志位(推荐)
  3. interrupt方法(初衷:不是为了停止线程,而是中断线程)

线程的交互:互斥与同步

  1. 互斥的实现:synchronized(intrinsic lock)
  2. 同步的实现:wait()/notify()/notifyAll()

总结:

创建线程的三种方式对比:

1.采用实现Runnable,Callable接口的方式创建多线程

  • 优势是:线程类知识实现了Runnable或Callable接口,还可以继承其他类
  • 在这种方式下,多个线程可以共享同一个target对象,所以非常适合多个相同线程来处理同一份资源的情况。
  • 劣势是:编程比较复杂,访问当前线程必须使用Thread.currentThread()方法

2.采用继承Thread类的方式创建多线程

  • 优势是:编写简单,访问当前线程直接使用this即可。
  • 劣势是:因为线程类已经继承了Thread类,所以不能再继承其他父类。

一般推荐采用实现Runnable接口,Callable接口的方式来创建多线程。
-

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值