线程中Thread和Runnable区别

线程中Thread和Runnable区别

  1. 什么是线程
  2. 基本方法
  3. 线程的实现方法
  4. 比较Thread和Runnable
  5. Thread和Runnable的使用情况

1. 什么是线程

线程是进程中独立运行的子任务,比如我们运行的QQMusic的时候,然后就会有很多的子任务,而且不同的子任务可以共同工作,这时候每一个子任务就是一个线程,多个子任务共同工作,就是多线程。使用多线程,很大程度上缩短了用户等待时间,而且使CPU(中央处理器)的利用率大幅度的降低。

2.基本方法

  1. yield()方法是让当前抢到cpu的线程退出cup从新进行等待队列
  2. join()方法超级VIP,直接抢占资源
  3. interrupt()方法中断sleep线程
  4. suspend()将线程挂起,不用了,因为容易造成死锁的状态
  5. resume();将线程恢复执行
  6. sleep()使线程进入短暂的休眠
  7. synchronized 锁旗标—放在方法中叫方法同步

线程运行图
在这里插入图片描述

3. 线程的实现方法

多线程的编程方式有两种:一是继承Thread类,另一种是实现Runnable接口;
Thread类是实现了Runnable接口,它们之间实现了多态关系;但是有一个弊端,继承只能是单继承的,针对于这种情况,然后实现了Runnable接口。

继承Thread类

package com.lrc.thread;

public class MyThread extends Thread{
	public MyThread() {
		super();
		System.out.println("当前线程的名字:"+Thread.currentThread().getName());
	}
	@Override
	public void run() {
		System.out.println("当前线程名字:"+Thread.currentThread().getName());
	}

	public static void main(String[] args) {
		MyThread mt=new MyThread();
		//直接调用MyThread()的构造方法
		mt.start();//线程进入可运行状态
		System.out.println("运行结束");
	}
	//先执行MyThread,然后打印运行结束,再执行打印出Thread线程的run方法
	//也说明了代码的运行结果与代码的执行顺序或调用顺序是无关的。
}

代码运行效果如下
在这里插入图片描述

实现Runnable接口

package com.lrc.thread;

public class MyRunnable implements Runnable{

	@Override
	public void run() {
		System.out.println("Runnable运行中");
	}

	public static void main(String[] args) {
		Runnable mr=new MyRunnable();
		Thread th=new Thread(mr);
		th.start();//进入可运行状态
		System.out.println("运行结束");
	}
	//先执行MyRunnable的方法,打印出“运行结束”,再执行run方法
}

代码运行效果如下
在这里插入图片描述

4. 比较Thread和Runnable

  1. 如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。
  2. main函数,实例化线程对象也有所不同,
    extends Thread :t.start();
    implements Runnable : new Thread(t).start();
  3. 使用Runnable,增加程序的健壮性,代码可以被多个线程共享,代码和数据独立
  4. 线程池只能放入实现Runable或callable类线程,不能直接放入继承Thread的类

5. Thread和Runnable的使用情况

当一个事情分几个人做的时候,用runnable
当不同的事情不同人做的时候,用thread

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值