本讲主要介绍多线程,多线程编程是Java编程中的一个重要部分。它允许程序同时执行多个任务,这有助于提高程序的效率和性能。在Java中,可以通过实现Runnable接口或继承Thread类来创建线程。
Java多线程是指在一个进程中有多个线程在并发执行。在Java中,每个线程都有其自己的程序计数器、堆栈和局部变量等资源,这些资源是线程私有的。多个线程可以同时执行,可以提高程序的并发性和效率。如图:

线程在Java中有多种状态,包括:
1.新建(New):当我们创建一个新的Thread对象时,它处于新建状态。
2.就绪(Runnable):一旦线程被启动并且所有本地资源都已经被成功分配,它就可以运行了。此时,线程处于就绪状态。
3.阻塞(Blocked):当线程由于某种原因(如等待I/O操作)无法运行时,它处于阻塞状态。
4.等待(Waiting):当线程处于等待状态时,它会一直等待,直到另一个线程做出某种动作(如调用notify或notifyAll方法)。
5.超时等待(Timed Waiting):这是一种带有时间限制的等待。当线程等待了指定的时间后,就会自动结束等待状态。
6.终止(Terminated):当线程执行完毕或被强制终止时,它处于终止状态。
上面也是多线程的生命周期,6种状态是可以切换的。如图:

线程的状态切换是由操作系统控制的。当线程处于就绪状态时,它会被操作系统调度并分配CPU资源。在执行过程中,线程可能会因为某些原因而进入阻塞状态,例如等待I/O操作。当阻塞状态被解除时,线程会重新进入就绪状态,等待CPU资源的分配。如果所有线程都处于就绪状态,操作系统会根据优先级和时间片等因素来决定哪个线程先获得CPU资源。在Java中,可以使用Thread.getState()方法来获取线程的状态信息。例如:thread.getState()返回Thread.STATE_NEW表示线程处于新建状态,Thread.STATE_RUNNABLE表示线程处于就绪状态。
Java中的多线程可以通过以下两种方式实现
要实现Runnable接口,需要重写run()方法。run()方法包含了线程的执行代码。创建Thread对象时,需要将实现了Runnable接口的对象作为参数传递给Thread构造函数。当线程被启动时,run()方法会被调用。
代码如下:
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Thread is running...");
}
}
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.start();
}
}public class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread is running...");
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}Java多线程的用途主要体现在以下几个方面:
总之,Java多线程技术在提高系统性能、优化资源利用、加速任务处理、提升用户体验等方面发挥着重要作用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。