2026/2/21 1:33:22
网站建设
项目流程
全国论坛网站建设,个人网站可以干什么,网站建设分金手指专业一,怎么编辑网站前言
在现代软件开发中#xff0c;多线程并发编程是提升应用性能的关键技术。本文将深入探讨Java并发编程的核心概念、常用工具类以及实战技巧#xff0c;帮助你掌握高并发场景下的编程能力。一、线程基础与生命周期
1.1 创建线程的三种方式
方式一#xff1a;继承Thread类
…前言在现代软件开发中多线程并发编程是提升应用性能的关键技术。本文将深入探讨Java并发编程的核心概念、常用工具类以及实战技巧帮助你掌握高并发场景下的编程能力。一、线程基础与生命周期1.1 创建线程的三种方式方式一继承Thread类publicclassMyThreadextendsThread{Overridepublicvoidrun(){System.out.println(线程名称: Thread.currentThread().getName());System.out.println(线程正在执行...);}publicstaticvoidmain(String[]args){MyThreadthreadnewMyThread();thread.start();// 启动线程}}方式二实现Runnable接口推荐publicclassMyRunnableimplementsRunnable{Overridepublicvoidrun(){for(inti0;i5;i){System.out.println(Thread.currentThread().getName() - i);}}publicstaticvoidmain(String[]args){MyRunnablerunnablenewMyRunnable();Threadthread1newThread(runnable,线程1);Threadthread2newThread(runnable,线程2);thread1.start();thread2.start();}}方式三实现Callable接口有返回值importjava.util.concurrent.*;publicclassMyCallableimplementsCallableInteger{OverridepublicIntegercall()throwsException{intsum0;for(inti1;i100;i){sumi;}returnsum;}publicstaticvoidmain(String[]args)throwsExecutionException,InterruptedException{MyCallablecallablenewMyCallable();FutureTaskIntegerfutureTasknewFutureTask(callable);ThreadthreadnewThread(futureTask);thread.start();// 获取返回结果会阻塞直到任务完成IntegerresultfutureTask.get();System.out.println(计算结果: result);}}1.2 线程生命周期线程在其生命周期中会经历以下状态NEW新建线程对象创建后的初始状态RUNNABLE可运行调用start()后线程可能正在运行或等待CPU分配时间BLOCKED阻塞等待获取监视器锁WAITING等待无限期等待另一个线程执行特定操作TIMED_WAITING超时等待有时限的等待TERMINATED终止线程执行完毕publicclassThreadStateDemo{publicstaticvoidmain(String[]args)throwsInterruptedException{ThreadthreadnewThread(()-{try{Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();}})