java线程使用总结

继承季风
• 阅读 1401

线程知识点归纳,后续更新

  1. 后台线程:设置Thread.setDaemon(true)就是后台线程了。

前台线程:不设置。
如果没有前台线程了,那么整个程序都会结束。

  1. 线程的合并:Thread.join(10000);

将子线程加入主线程,两个线程合并10秒后分开。

  1. 线程同步:

    1. synchronized(Object){ 代码块 } Object必须是同一个对象才能进行同步。
    2. 在方法前面加synchronized。new Thread(Object).start();start只是准备运行,处于准备状态,并不是确定开始执行。
  2. 实现代码块与方法的同步:synchronized(Object),

Object为Object.class(两个为同一个对象监视器)
死锁:你等我,我等你

  1. 线程间的通信:(要是同一个对象的waitnotifynotifyAll)

    1. wait:告诉当前线程放弃监视器并进入睡眠状态,直到其他线程进入同一监视器并调用notify为止。
    2. notify:唤醒同一对象监视器中调用wait的第一个线程。用于类似饭馆有一个空位后通知所有等候就餐的顾客中的第一位可以入座的情况。
    3. notifyAll:唤醒同一对象监视器中调用wait的所有线程,具有最高优先级的线程首先被唤醒并执行。
  2. 生命周期:start-->runnable-->running-->run()方法完成
  3. 方法:

    1. suspend(阻塞),resumen(恢复线程执行),stop()
    2. 以上方法容易造成死锁。最好用一个变量去控制它的生命周期。
  4. sleep方法:让当前线程休眠。自己拥有锁,不让出。

    1. 自己过一段时间可以醒。
    2. 而wait方法,是在等待,让出了锁,需要别人叫醒。
    3. yield方法:让出cpu,给其他线程执行机会。
  5. 线程的优先级(Priority):默认为5。
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java 面试知识点笔记(十三)多线程与并发
java线程池,利用Exceutors创建不同的线程池满足不同场景需求:1.newSingleThreadExecutor() 创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。2.
Wesley13 Wesley13
3年前
java多线程中的基本方法
                java多线程中的基本方法线程睡眠sleep()我们可以通过sleep方法设置让线程睡眠,可以看到sleep是个静态方法。publicstaticnativevoidsleep(longvar0)throwsInterruptedException;   try{       Syst
Wesley13 Wesley13
3年前
java并发编程的艺术之Java并发基础
为什么要使用多线程Java天生就是多线程程序,简单的一个main()方法的执行,其实是由main线程和其它的线程共同执行的。当然使用多线程有如下的好处:    1、利用更多的处理器核心    2、更快的响应速度,如将数据一致性不强的操作交给其它的线程去操作    3、更好的编程模型线程简介一、
Stella981 Stella981
3年前
AsyncTask的用法
AsyncTask,即异步任务,是Android给我们提供的一个处理异步任务的类.通过此类,可以实现UI线程和后台线程进行通讯,后台线程执行异步任务,并把结果返回给UI线程..为什么需要使用异步任务?我们知道,Android中只有UI线程,也就是主线程才能进行对UI的更新操作,而其他线程是不能直接操作UI的.这样的好处是保证了UI的稳定性和准确性,避
Stella981 Stella981
3年前
Redis 6.0 新特性
点击上方蓝色文字\z小赵\关注我们吆资深程序员、架构师技术社区导读:支持多线程的Redis6.0版本于20200502终于发布了,为什么Redis忽然要支持多线程?如何开启多线程?开启后性能提升效果如何?线程数量该如何设置?开启多线程后会不会有线程安全问题?多线程的实现原理是怎样的?带着这些疑问,我们来开启Re
Wesley13 Wesley13
3年前
03.Android崩溃Crash库之ExceptionHandler分析
目录总结00.异常处理几个常用api01.UncaughtExceptionHandler02.Java线程处理异常分析03.Android中线程处理异常分析04.为何使用setDefaultUncaughtExceptionHandler前沿上一篇整体介绍了crash崩溃
Wesley13 Wesley13
3年前
Java中User Thread和Daemon Thread的区别
Java将线程分为User线程和Daemon线程两种。通常Daemon线程用来为User线程提供某些服务。程序的main()方法线程是一个User进程。User进程创建的进程为User进程。当所有的User线程结束后,JVM才会结束。通过在一个线程对象上调用setDaemon(true),可以将user线程创建的线程明确地设置成Daemon线程。例如,时
Stella981 Stella981
3年前
Noark入门之线程模型
0x00单线程多进程单线程与单进程多线程的目的都是想尽可能的利用CPU,减少CPU的空闲时间,特别是多核环境,今天咱不做深度解读,跳过...0x01线程池锁最早的一部分游戏服务器是采用线程池的方式来处理玩家的业务请求,以达最大限度的利用多核优势来提高处理业务能力。但线程池同时也带来了并发问题,为了解决同一玩家多个业务请求不被
Wesley13 Wesley13
3年前
Java线程与多线程
1线程与多线程1.1线程是什么?线程(Thread)是一个对象(Object)。用来干什么?Java线程(也称JVM线程)是Java进程内允许多个同时进行的任务。该进程内并发的任务成为线程(Thread),一个进程里至少一个线程。Java程序采用多线程方式来支持大量的并发请求处理,程序如果在
可莉 可莉
3年前
015.4守护线程和join
内容:守护线程、join方法守护线程通过开启线程之前调用setDaemon()方法,变成后台线程,前台线程运行完,后台线程自动会结束例子!(https://oscimg.oschina.net/oscnet/bb52c915be2d4434c903b5376fc7b958e
Wesley13 Wesley13
3年前
Java多线程:线程属性
\线程属性id:线程唯一标识。自动生成。不允许修改。name:线程的名字,可以自定义成有具体含义的名字,便于识别不同作用的线程。(可同名)isDaemon:是否是守护线程。true守护线程,false用
继承季风
继承季风
Lv1
寂寞空庭春欲晚,梨花满地不开门。
文章
3
粉丝
0
获赞
0