美文网首页
javaSE_day16_线程

javaSE_day16_线程

作者: 智慧之门 | 来源:发表于2018-06-04 10:32 被阅读0次

进程: 内存中 正在运行的一个应用程序。

线程: 进程中的一个执行流程。

多线程:有两个 或 两个以上 并发的执行流程。

---------------------------------------

线程的生命周期

1.新建: new Thread();

2.就绪: start();

3.运行:run(){}

4.阻塞:暂停执行

  1)sleep,join阻塞

        sleep:等待 多少毫秒 ;超时了之后 恢复 就绪状态等待CPU调用执行。

         join:等待其它线程执行完。

            线程A 调用了线程B的join()方法, 那么线程A等待 线程B执行完后,再执行。

    2)同步

    3) wait

5.死亡

----------------------------------

主线程:任务 main()

问题 :启动一个java应用程序至少启动几个?

  主线程, 垃圾回收线程

-------------------------------------

子线程

名 : Thread-数字

创建子线程

      方式:

        1.继承 Thread类

        2.实现接口 Runnable接口

    区别:

      1.继承Thread类 ,继承了Thread类的所有可以继承的方法;Runnable接口 ,只有 run();

      2.Runnable接口 有利于资源共享。

-----------------------------------

优先级:1  -  10;10最高

// zhangsan.setPriority(Thread.MAX_PRIORITY);

// zhangsan.setPriority(Thread.MIN_PRIORITY);

zhangsan.setPriority(Thread.NORM_PRIORITY);

------------------------------------------

线程中断引发:InterruptedException 异常:

前提 :当前线程 处于 sleep 或 join时,被其它 线程中断了 iterrupt()了,那么 当前线程 会进行

      异常处理。例如:主线程 调用了子线程 t1的 iterrupt方法 ,子线程 t1被中断 进入异常处理。

------------------------------------------

yield线程让步(了解)

理论上:当线程A 调用了 yield方法,那么 会 让给线程优先级 比它 高的线程 或 优先级和它平等的线程执行。

------------------------------------------------

同步

某一时刻 此资源 只能被一个线程独占。

语法

    1.同步块:锁定 对象

    2.同步方法:锁对象this

获得锁

      当一个线程 访问此对象的 同步块 或 同步方法的时候,申请同步锁,申请成功了,就获得了锁。在执行 同步块和 同步方法的过程中,其它线程 进入 线程锁定池中处于 阻塞状态。只有 当前执行锁的线程 释放了锁 其它线程才有 机会 获得CPU的调用执行。

释放锁

      1.同步方法或同步块中的 代码正常执行完了,就释放了;

      2.  出现了未处理的 异常Exception和 Error时 ,释放锁;

      3   break,return语句,会结束方法或代码块,那么会释放锁。

      4. 执行了 wait()会释放锁。

------------------------------

Lock 作用:

      1.lock可以显示的加锁 和 释放锁;

      2.提供了更多的功能。

-------------------------------------

sleep(): 一定要指定参数; 放弃了CPU的执行权,但是没有放弃锁。

wait():可以指定参数,也可以不指定;放弃了CPU的执行权,也放弃了锁。

相关文章

  • javaSE_day16_线程

    进程: 内存中 正在运行的一个应用程序。 线程: 进程中的一个执行流程。 多线程:有两个 或 两个以上 并发的执行...

  • Android

    线程间通信 主线程和工作线程主线程和工作线程 工作线程与工作线程工作线程与工作线程 为什么主线程Looper.lo...

  • 三、操作系统之线程

    前言 什么是线程 引入线程的原因 线程的概念 线程和进程的关系 线程结构 线程有点 多线程模型 用户线程和内核线程...

  • Thread

    队列 线程锁 多线程,线程池 队列 多线程爬虫示例 多线程 自定义线程 线程池

  • 总结多线程与设计模式+synchronized+性能+高吞吐+死

    Java线程 Java语言的线程 何谓线程 线程启动 线程的暂时停止 线程的共享互斥 线程的协调 线程的状态转移 ...

  • 多线程编程

    摘要 线程概念,线程与进程的区别与联系学会线程控制,线程创建,线程终止,线程等待了解线程分离与线程安全学会线程同步...

  • java线程池

    线程VS线程池 普通线程使用 创建线程池 执行任务 执行完毕,释放线程对象 线程池 创建线程池 拿线程池线程去执行...

  • java并发之守护线程

    java中有两种线程,用户线程和守护线程用户线程:主线程停止时,用户线程不会停止守护线程:主线程停止时,守护线程也...

  • Java线程池的使用

    线程类型: 固定线程 cached线程 定时线程 固定线程池使用 cache线程池使用 定时调度线程池使用

  • 线程基础知识

    线程学习 线程的基础知识 线程是什么? 线程和进程的关系 线程的6个状态 线程优先级 主线程、多线程、后台线程的概...

网友评论

      本文标题:javaSE_day16_线程

      本文链接:https://www.haomeiwen.com/subject/iurddftx.html