美文网首页
Java 线程执行过程, 线程资源共享

Java 线程执行过程, 线程资源共享

作者: 攻城狮托马斯 | 来源:发表于2020-05-12 15:50 被阅读0次

Interrupt(), isInterrupted()


在Sleep(), wait()等操作中, 如果线程被Interrupt,会抛出InterruptedException

InterruptedException会把interruptted标志位由True改为False, 因此,需要在catch(InterruptedException e)中, 手动interrupt();

这样的好处是,在手动Interrupt之前,可以释放当前线程持有的资源。

Run(), Start()


UseThread thread = new UseThread(); //新建一个线程Object

thread.start() //只能被调用一次,线程Object开始和运行挂钩

thread.run()//可以被调用多次, 线程开始运行

如果线程不start直接run, 那么用来执行run()这个任务的可能是其他的线程.

线程执行的全过程


Yield(): 让CPU让出线程的占有权, 从CPU中退出, 不一定会释放该线程持有的锁,因为线程可能不持有锁

(yield();)

Join(): A.join(), 让主线程先wait()挂起, 等执行完A线程的时候再继续执行. 底层以wait()实现, 释放主线程自身的锁. 

Join还可以保证任务按顺序执行,只有A执行完成了之后,主线程才能执行完.

setPriority(): 只能设置Priority但是真正的不一定有用.

setDaemon(): 用户启动的线程基本都是非守护线程,

而由JDK使用的为守护线程, 用户后台资源调度等.

守护线程中finally方法并不一定起作用,因为一旦主线程退出,守护线程就马上也退出了。

线程线资源共享


synchronize关键词

Object 对象锁

可以加在方法或者代码块上,都是对Object加锁

Class 类锁

放在static方法或者对象中的锁

相关文章

  • Java 线程执行过程, 线程资源共享

    Interrupt(), isInterrupted() 在Sleep(), wait()等操作中, 如果线程被I...

  • 多线程创建的三种方式之继承Thread类

    继承Thread类创建线程在java里面,开发者可以创建线程,这样在程序执行过程中,如果CPU空闲了,就会执行线程...

  • Java的多线程简单了解

    Java中的多线程 一、进程的概念 进程:程序的执行过程,它持有资源(共享内存、共享文件)和线程 执行过程:代表着...

  • JAVA线程池笔记

    Java多线程及其Java线程池 Thread和Runnable的区别 继承Thread,则不适合资源共享,实现R...

  • 线程问题总结

    什么是线程? 线程是指程序在执行过程中,能够执行程序代码的一个执行单元,在Java语言中,线程有四种状态:运行,就...

  • 线程池

    线程池种类 ThreadPoolExecutor 基础线程池 线程执行任务过程 当前执行线程数 < corePoo...

  • Java面试题——多线程

    Java面试题——多线程 1,什么是线程池? 线程池是多线程的一种处理方式,处理过程中将任务提交给线程池,任务执行...

  • 分析Java线程池Callable任务执行原理

    Java并发编程源码分析系列: 分析Java线程池的创建 分析Java线程池执行原理 上一篇分析了线程池的执行原理...

  • 分析jdk-1.8-ForkJoinPool实现原理(上)

    Java并发编程源码分析系列: 分析Java线程池的创建 分析Java线程池执行原理 分析Java线程池Calla...

  • 分析jdk-1.8-ForkJoinPool实现原理(下)

    Java并发编程源码分析系列: 分析Java线程池的创建 分析Java线程池执行原理 分析Java线程池Calla...

网友评论

      本文标题:Java 线程执行过程, 线程资源共享

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