美文网首页already
线程-线程基础

线程-线程基础

作者: go_2021 | 来源:发表于2022-03-04 12:09 被阅读0次
创建线程

new Thread(?).start() ?可以是2种。

  1. runable接口的实现类 也可以继承Thread类
    会执行对应的run方法
  2. new Future(callable接口的实现类)
    之后.get()才会真正执行 callable中的call方法

这两种有啥区别
处理异常方式不同。
一个是有返回值,一个没有返回值。
对应线程池executesubmit方法。
一个是start就开始运行,一个是get开始。

线程处理异常?

https://www.cnblogs.com/wang-meng/p/10639914.html

  • 继承Thread 或者runnable可用
thread.setUncaughtExceptionHandler(new ExceptionHandler());
 class ExceptionHandler implements UncaughtExceptionHandler  
 重写 uncaughtException
 来处理发生的异常 抛出或者不抛出
  • callable的线程
CallableTask callableTask1 = new CallableTask();
FutureTask ft = new MyFutureTask(callableTask1);
new Thread(ft).start();
System.out.println(ft.get());
发生异常 是get 来抛出的 所以可以 try get()

线程状态
https://www.jianshu.com/p/da90ab7bc79b

表头 表头
NEW new thread
RUNNABLE start()
BLOCKED(不响应中断) s锁,wait
WAITING wait(notify notifyAll),join ,LockSupport.park
TIMED_WAITING wait,join(timeout) ,LockSupport.park(timeout) ,sleep
TERMINATED
不常用方法

JDK 1.0本来有一些像stop(), suspend() ,resume()的控制方法但是由于潜在的死锁威胁因此在后续的JDK版本中他们被弃用了。
https://my.oschina.net/javaroad/blog/2878517
yield 让出自己的cpu资源 重新分配 但是结果不一定。
setPriority会设置概率 但是不能保证。

Java中如何停止一个线程?
  1. 当run() 或者 call() 方法执行完的时候线程会自动结束。
  2. 当运行中出现了异常会停止运行。
  3. 设置中断(waiting和timed_waiting可以相应)
interrupt相关的方法
  • private native boolean isInterrupted(boolean ClearInterrupted);
    这个方法来判断 线程是否是中断的状态 而且支持清除中断状态
  • public void interrupt()
    这个方法是来设置 线程为中断状态
中断响应

https://www.jianshu.com/p/f75b77bdf389
我们设置了 线程的中断状态 那线程就会中断么?

  • runnable
    if (Thread.interrupted()) throw new InterruptedException();
  • blocked waiting timed waiting
  • s锁 不可中断
  • wait 可以
  • join 可以
  • sleep 可以
  • 并发包里的lock 可以
  • web socked 普通的accept不可以 nio的可以

相关文章

  • 年薪50W阿里P7架构师必备知识:并发+JVM+多线程+Nett

    并发编程 线程基础、线程之间的共享和协作一 线程基础、线程之间的共享和协作二 线程的并发工具类 线程的并发工具类、...

  • Java-并发编程知识点总结

    目录: 线程基础 线程池 各种各样的锁 并发容器 原子类 Java 内存模型 线程协作 AQS 框架 一、线程基础...

  • 1.线程基础 -《多线程编程实战》

    1.线程基础 -《多线程编程实战》线程的生命周期,包括创建线程、挂起线程、线程等待,以及中止线程。 1.2 创建线...

  • Android中的多线程

    1. Java多线程基础 Java多线程,线程同步,线程通讯 2. Android常用线程 HandlerThre...

  • 线程基础知识

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

  • 多线程方法

    一. 基础并行多线程结构 二. 标准多线程方法,控制并发线程数,带线程锁

  • 线程池

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

  • Java多线程总结 之 基础概念

    基础概念 序言 线程知识结构图 线程基础 什么是线程: 线程和进程的区别: 什么是同步: 并发和并行的区别: 什么...

  • 线程-线程基础

    创建线程 new Thread(?).start() ?可以是2种。 runable接口的实现类 也可以继承Thr...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

网友评论

    本文标题:线程-线程基础

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