java多线程学习笔记

最近在复习java,刚好看到java多线程,所以就把自己学习的一些心得写下来,保存,方便以后自己再看
一:

在java中,线程分成两类:用户线程和守护线程

先来说说用户线程:运行在前台。执行具体的任务程序的主线程,连接网络的子线程等都是用户线程

用户线程的实现方式有两种方法:1.继承Thread类,2.实现Runnable方法。

请看如下示例代码:

继承Thread类实现多线程:

package com.test;

public class ThreadTestDemo extends Thread{
	@Override
	public 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{

	@Override
	public 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:不是所有的任务都可以分配给守护线程来执行,比如读写操作,或者逻辑计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值