专业网页设计培训,网站做优化有几种方式,东莞市疾控中心地址,营销型网站建设要目录
一、线程的定义
二、线程的实现
三、线程状态 程序并发执行多个任务
二、线程的实现
1、继承Thread类创建线程#xff1a;通过继承Java的Thread类并重写其run()方法#xff0c;可以创建一个新的线程。然后#xff0c;通过调用线程的start()方法来启动线程#xf…目录
一、线程的定义
二、线程的实现
三、线程状态 程序并发执行多个任务
二、线程的实现
1、继承Thread类创建线程通过继承Java的Thread类并重写其run()方法可以创建一个新的线程。然后通过调用线程的start()方法来启动线程这将导致JVM调用线程的run()方法。注意不应直接调用run()方法因为这样只会作为普通方法调用而不会启动新的线程。2、实现Runnable接口创建线程另一种创建线程的方式是实现Java的Runnable接口并同样重写其run()方法。然后可以创建一个Thread对象并将Runnable对象作为参数传递给Thread对象的构造函数。最后通过调用Thread对象的start()方法来启动线程。这种方式的一个优点是一个类可以继承其他类并实现Runnable接口从而实现多重继承的效果。
public class MyThread extends Thread { Override public void run() { // 线程执行的代码 for (int i 0; i 5; i) { System.out.println(MyThread running: i); } } public static void main(String[] args) { // 创建并启动线程 MyThread thread new MyThread(); thread.start(); // 主线程继续执行 for (int i 0; i 5; i) { System.out.println(Main thread running: i); } }
}
public class MyRunnable implements Runnable { Override public void run() { // 线程执行的代码 for (int i 0; i 5; i) { System.out.println(MyRunnable running: i); } } public static void main(String[] args) { // 创建Runnable对象 MyRunnable runnable new MyRunnable(); // 创建Thread对象并将Runnable对象作为参数 Thread thread new Thread(runnable); // 启动线程 thread.start(); // 主线程继续执行 for (int i 0; i 5; i) { System.out.println(Main thread running: i); } }
}
三、线程状态 在Java中线程可以处于多种状态这些状态反映了线程在其生命周期中的不同阶段。Java线程状态的主要类型包括新建NEW、就绪RUNNABLE、阻塞BLOCKED、等待WAITING、超时等待TIMED_WAITING和终止TERMINATED。下面是对这些状态的详细解释 新建NEW当线程对象被创建但尚未启动即尚未调用start()方法时线程处于新建状态。此时线程对象已经分配了必要的内存和其他资源但它还没有开始执行。 就绪RUNNABLE一旦线程启动即调用了start()方法它就进入了就绪状态。就绪状态的线程已经具备运行的所有条件正在等待CPU的调度。当CPU空闲时线程调度器会从就绪状态的线程中选择一个来执行。 阻塞BLOCKED当一个线程试图获取一个内部的对象锁而不是java.util.concurrent库中的锁而该锁被其他线程持有时该线程会进入阻塞状态。当持有锁的线程释放锁时阻塞状态的线程会进入就绪状态等待CPU的调度。 等待WAITING当线程执行了对象的wait()方法时它会进入等待状态。等待状态的线程不会占用CPU资源它等待其他线程执行特定对象的notify()或notifyAll()方法来唤醒它。唤醒后线程会进入就绪状态。 超时等待TIMED_WAITING这是线程等待的另一个状态但带有超时参数。当线程执行了Thread.sleep(long millis)、Object.wait(long timeout)或Thread.join(long millis)等带有超时参数的方法时它会进入超时等待状态。如果在指定的超时时间内没有被唤醒或超时结束线程会结束等待并返回到就绪状态。 终止TERMINATED当线程的run()方法执行完毕或者因异常退出线程就进入了终止状态。终止状态的线程不会再执行任何操作它的生命周期已经结束。