Java线程使用

Java中线程的使用

  • 第一种使用方法:继承Thread类:
    • 创建自定义类并继承Thread
    • 重写Thread的 run() 方法,并编写该线程的业务逻辑代码

1.定义好了⼀个线程类之后,我们就可以通过该类来实例化对象,对象就可以描述⼀个线程。
2. 实例化该对象之后,必须通过调⽤start()来开启该线程,这样该线程才会和其他线程来抢占CPU资源,不能调⽤run()⽅法,调⽤run()相当于普通的实例对象⽅法调⽤,并不是多线程。

使用:

  • 实例化自定义线程类的对象,该对象就是一个线程对象,然后启动线程即可。
package thread;

public class MyThread extends Thread {
	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i = 0; i < 1000;i++) {
			System.out.println("-------------MyThread-----------");
		}
	}
}
package thread;

public class Test {
	public static void main(String[] args) {
		for(int i = 0; i < 1000;i++) {
			System.out.println("-----------------Test");
		}
		MyThread myThread = new MyThread();
		myThread.start();
	}
}
  • 第二种使用方法:实现Runnable接口:
    • 创建自定义类并实现Runnable接口
    • 实现run方法,编写该线程的业务逻辑代码
  • MyRunnable的使⽤与MyThread略有不同:
    • MyRunnable相当于定义了线程的业务逻辑,但是它本身不是⼀个线程,所以需要实例化Thread类的对象作为线程,然后将MyRunnable对象赋给Thread对象,这样Thread就拥有了MyRunnable中定义的业务逻辑,再通过调⽤Thread对象的start⽅法来启动线程。

使用:

  • 实例化实现类对象,但它并不是一个线程对象,它只是实现了线程要执行的业务逻辑。
  • 还需要shi’l线程对象(Thread),将实现类传给线程对象,就会覆盖线程对象继承自父类的 run() 方法。
package thread; 	

public class MyRunnable implements Runnable {

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i = 0; i < 1000;i++) {
			System.out.println("!===Runnable===!");
		}
	}

}
package thread;

public class Test2 {
	public static void main(String[] args) {
		MyRunnable myRunnable = new MyRunnable();
		Thread thread = new Thread(myRunnable);
		thread.start();
		MyThread myThread = new MyThread();
		myThread.start();
	}
}

注意

  • 启动线程需要调⽤线程对象的start⽅法,不能直接调用run() 方法。
  • 应该调⽤start⽅法来启动该线程,然后该线程就进⼊了就绪状态,等待系统为其分配CPU资源,⼀旦在时间段内获取到CPU资源,开始执⾏线程的业务逻辑,⾃动调⽤run。

在这里插入图片描述


线程的状态

线程共有5种状态,在特定的情况下,线程可以在不同的状态之间完成切换,5种状态如下所示。

  • 创建状态: 实例化一个新的线程对象,没有启动。
MyThread myThread = new MyThread();
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
  • 就绪状态: 线程对象创建好之后,调用该对象的start方法启动线程,该状态下的线程对象位于可运行线程池 中,等待系统为其分配CPU资源。
myThread.start();
thread.start();
  • 运行状态: 就绪状态的线程在某个时间段内获取到了CPU资源,从而执行程序,完成它的任务。

  • 阻塞状态: 运行状态的线程因某些原因暂时放弃CPU资源,停止执行程序,并在解除阻塞之后也不能直接回到运行状态,而是重新回到就绪状态,等待获取CPU资源。

  • 终止状态: 线程执行完毕或者因为异常退出,该线程的生命周期结束。

在这里插入图片描述
在这里插入图片描述


回到多线程目录

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值