Java中多线程的创建和使用

发布时间:2019年12月03日作者:atguigu浏览次数:539

Java培训机构

1 多线程的创建和启动

  • Java语言的JVM允许程序运行多个线程,它通过lang.Thread类来实现。
  • Thread类的特性
    • 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体
    • 通过该Thread对象的start()方法来调用这个线程

2 子线程的创建和启动过程

java培训机构

Java培训机构

3 Thread类

  • 构造方法
    • Thread():创建新的Thread对象
    • Thread(String threadname):创建线程并指定线程实例名
    • Thread(Runnable target):指定创建线程的目标对象,它实现了Runnable接口中的run方法
    • Thread(Runnable target, String name):创建新的Thread对象

 

创建线程的两种方式

 

一 继承Thread类

 1)  定义子类继承Thread类。

 2)  子类中重写Thread类中的run方法。

 3)  创建Thread子类对象,即创建了线程对象。

 4)  调用线程对象start方法:启动线程,调用run方法

二 实现Runnable接口

1)定义子类,实现Runnable接口。

2)子类中重写Runnable接口中的run方法。

3)通过Thread类含参构造器创建线程对象。

4)将Runnable接口的子类对象作为实际参数传递给Thread类的构造方法中。

5)调用Thread类的start方法:开启线程,调用Runnable子类接口的run方法。

4 继承方式和实现方式的联系与区别

【区别】

1)继承Thread:       线程代码存放Thread子类run方法中。

2)实现Runnable:线程代码存在接口的子类的run方法。

【实现方法的好处】

1)避免了单继承的局限性

2)多个线程可以共享同一个接口子类的对象,非常适合多个相同线程来处理同一份资源。

5Thread类的有关方法(1)

  • void start(): 启动线程,并执行对象的run()方法
  • run(): 线程在被调度时执行的操作
  • String getName(): 返回线程的名称
  • void setName(String name):设置该线程名称
  • static currentThread(): 返回当前线程

线程的调度

  • 调度策略
    • 时间片
  • java培训机构
    • 抢占式高优先级的线程抢占CPU
  • Java的调度方法
    • 同优先级线程组成先进先出队列(先到先服务),使用时间片策略
    • 对高优先级,使用优先调度的抢占式策略

线程的优先级

  • MAX_PRIORITY(10);
  • MIN _PRIORITY (1);
  • NORM_PRIORITY (5);
  • 涉及的方法:
  • getPriority() :返回线程优先值
  • setPriority(int newPriority) :改变线程的优先级
  • 线程创建时继承父线程的优先级

6Thread类的有关方法(2)

  • static void  yield()线程让步
    • 暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程
    • 若队列中没有同优先级的线程,忽略此方法
  • join() 当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完为止
    • 低优先级的线程也可以获得执行
  • static void  sleep(long millis)(指定时间:毫秒)
    • 令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队。
    • 抛出InterruptedException异常
  • stop(): 强制线程生命期结束
  • boolean isAlive()返回boolean,判断线程是否还活着

7 使用多线程的优点

背景:只使用单个线程完成多个任务(调用多个方法),肯定比用多个线程来完成用的时间更短,为何仍需多线程呢?

多线程程序的优点:

  1. 提高应用程序的响应。对图形化界面更有意义,可增强用户体验。
  2. 提高计算机系统CPU的利用率
  3. 改善程序结构。将既长又复杂的进程分为多个线程,独立运行,利于理解和修改

上一篇:
下一篇:
相关课程

java培训 大数据培训 前端培训 UI/UE设计培训

关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园2号楼3层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)