java多线程学习笔记
来源:互联网 发布:数据恢复软件比较 编辑:程序博客网 时间:2024/04/30 02:58
最近在复习java,刚好看到java多线程,所以就把自己学习的一些心得写下来,保存,方便以后自己再看一:
在java中,线程分成两类:用户线程和守护线程
先来说说用户线程:运行在前台。执行具体的任务程序的主线程,连接网络的子线程等都是用户线程
用户线程的实现方式有两种方法:1.继承Thread类,2.实现Runnable方法。
请看如下示例代码:
继承Thread类实现多线程:
package com.test;public class ThreadTestDemo extends Thread{@Overridepublic void run(){while(true){ /** *可以在run方法中实现自己的逻辑 **/ System.out.println("通过继承Thread方法实现多线程");}} public static void main(String[] args) { ThreadTestDemo threadTestDemo = new ThreadTestDemo();//创建线程 threadTestDemo.start();//实现线程}}实现Runnable接口:
package com.test;public class RunnableTestDemo implements Runnable{@Overridepublic void run() {// TODO Auto-generated method stub/** * 在这里实现自己的逻辑 */while (true){System.out.println("通过实现Runnable方法实现多线程");}} public static void main(String[] args) {RunnableTestDemo runnableTestDemo = new RunnableTestDemo();Thread thread = new Thread(runnableTestDemo);//创建线程thread.start();//实现线程}}上述代码就是两种实现多线程的方法,上述代码的共同点就是都要new一个Thread对象,然后调用start()方法。
不同点
1:就是Runnable方式可以避免Thread方式由于java单继承特性带来的缺陷
2:Runnable的代码可以被多个线程(Thread实例)共享适合于多个线程处理同一资源的情况
建议:一般情况下使用实现Runnable接口的方式
二:
线程的生命周期
如上图所示:线程的整个生命周期,创建一个线程,通过调用start()方法,让线程进入就绪状态,获取到CPU的命令后进入运行状态,如果有阻塞时间或者命令,就进入阻塞状态,阻塞状态解除以后,重新进入就绪状态获取CPU指令,或者直接线程终止。
守护线程:运行在后台。为其他的前台线程服务
特点:一旦所有用户线程都结束运行,守护线程随JVM一起结束工作
应用:数据库连接池的检测线程,jvm虚拟机启动后的监测线程
最常见的守护线程:垃圾回收线程
如何设置守护线程:通过调用Thread类的setDaemon(true)方法来设置当前的线程为守护线程
注意事项:setDaemon(true)方法必须在start()方法之前调用,否则会抛出IllegalThreadStateException异常
2:在守护线程中产生的新线程也是守护线程
3:不是所有的任务都可以分配给守护线程来执行,比如读写操作,或者逻辑计算
0 0
- Java多线程学习笔记
- Java多线程学习笔记
- Java学习笔记---多线程
- java多线程学习笔记
- Java多线程学习笔记
- Java多线程学习笔记
- JAVA多线程学习笔记
- Java 多线程学习笔记
- java多线程学习笔记
- Java多线程学习笔记
- [学习笔记]Java多线程
- java多线程学习笔记
- Java多线程学习笔记
- Java学习笔记-多线程
- Java多线程学习笔记
- Java多线程学习笔记
- Java多线程学习笔记
- Java 多线程学习笔记
- hadoop 2.6 HdfsServerConstants源代码分析
- redis3.0.6集群安装
- jsp Servlet与Filter
- RxJava 学习笔记二
- 计算多行文字,高度展示不对的问题
- java多线程学习笔记
- C Primer Plus9-1
- 宏正自动科技高端级KVM解决方案获得Solaris Ready认证
- 实现验证码的思路
- C Primer Plus9-2
- LFS进阶版(QT)——GUI界面的实现
- C Primer Plus9-3
- Btspread Search Assistant的诞生
- 关于百度echares的学习