一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Java多线程基础详解

时间:2026-05-27 15:00:02 编辑:袖梨 来源:一聚教程网

多线程编程是现代软件开发的核心技术之一,掌握线程创建与管理的不同方式对于提升程序性能至关重要。线程创建两种方式方式 1:继承 Thread 类通过继承Thread类并重写其run()方法来实现线程逻辑,调用start()方法启动线程执行。// 1.定义线程类 class MyThread extends Thread{ @Override public void run() { // 线程执行任务 for (int i = 0; i < 5; i++) { System.out.println("线程执行:"+i); } } } // 测试 public class ThreadDemo { public static void main(String[] args) { MyThread t1 = new MyThread(); t1.start(); // 启动线程,自动执行run方法 } }方式 2:实现 Runnable 接口采用Runnable接口可以突破单继承限制,在实际开发中应用更为广泛。// 1.实现接口 class MyRunnable implements Runnable{ @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println("任务运行:"+i); } } } public class RunnableDemo { public static void main(String[] args) { MyRunnable task = new MyRunnable(); Thread t2 = new Thread(task); t2.start(); } }如何实现多线程// 1.定义线程类 class MyThread extends Thread{ @Override public void run() { // 线程执行任务 for (int i = 0; i < 5; i++) { // 加上当前线程名字,你能看清谁在跑 System.out.println(getName() + " 执行:"+i); } } } // 测试 public class ThreadDemo { public static void main(String[] args) { // 创建 2 个线程 MyThread t1 = new MyThread(); MyThread t2 = new MyThread(); // 给线程起名字 t1.setName("线程A"); t2.setName("线程B"); // 启动 → 这才是多线程! t1.start(); t2.start(); } } // 1. 定义任务(不是线程,是任务) class MyRunnable implements Runnable{ @Override public void run() { for (int i = 0; i < 5; i++) { // 打印当前线程名字,能看清谁在跑 System.out.println(Thread.currentThread().getName() + ":" + i); } } } public class RunnableDemo { public static void main(String[] args) { // 1. 创建任务 MyRunnable task = new MyRunnable(); // 2. 创建 2 个线程,执行同一个任务!!! Thread t1 = new Thread(task, "线程1"); Thread t2 = new Thread(task, "线程2"); // 3. 启动两个线程 → 这就是多线程! t1.start(); t2.start(); } }线程生命周期线程从创建到销毁会经历多个状态:新建对象、调用start()进入就绪状态、获取CPU执行权、可能进入阻塞状态,最终任务完成或异常终止。sleep 线程休眠使用sleep方法可以让当前线程暂停执行指定毫秒数,期间会释放CPU资源。class SleepThread implements Runnable{ @Override public void run() { for (int i = 1; i 0){ System.out.println("剩余票数:"+ticket--); } } } // 多线程抢票,会出现重复票数、负数票 public class UnSafeTest { public static void main(String[] args) { Ticket ticket = new Ticket(); new Thread(ticket,"窗口1").start(); new Thread(ticket,"窗口2").start(); } } //synchronized 加锁解决安全问题 class SafeTicket implements Runnable{ private int ticket = 10; // 锁对象 private final Object lock = new Object(); @Override public void run() { while (true){ // 同步代码块,同一时间只允许一个线程进入 synchronized (lock){ if(ticket

热门栏目