Java之线程编程的4种方法实现案例讲解
1、继承Thread
public class T4 { public static void main(String[] args) { System.out.println(Thread.currentThread()); Thread t1 = new A1(); t1.start(); } } class A1 extends Thread{ @Override public void run() { for(int i=0;i<10;i++) { System.out.println("Thread:"+Thread.currentThread().getName()); } } }
2、实现Runnable接口
public class T3 { public static void main(String[] args) { System.out.println("Thread:"+Thread.currentThread().getName()); Thread t1 = new Thread(new A2()); t1.start(); } } class A2 implements Runnable{ @Override public void run() { int res =0; for(int i=0;i<10;i++) { res+=i; System.out.println("Thread:"+Thread.currentThread().getName()); } } }
3、使用Callable和Future接口创建线程
import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class T2 { public static void main(String[] args) throws Exception { System.out.println("Test3:" + Thread.currentThread().getName()); Callable c = new A4(); FutureTask ft = new FutureTask(c); Thread t1 = new Thread(ft); t1.start(); Object res = ft.get(); System.out.println("结果:" + res); } } class A4 implements Callable { @Override public Object call() throws Exception { int res = 0; for (int i = 0; i < 10; i++) { res += i; System.out.println("Thread:" + Thread.currentThread().getName()); } return res; } }
4、使用线程池创建线程
享元模式
享元模式Flyweight Pattern主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于 结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式
优点:大大减少对象的创建,降低系统内存的使用,以提高程序的执行效率。
缺点:提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部 状态的变化而变化,否则会造成系统的混乱。
import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class T1 { public static void main(String[] args) throws Exception { Future[] arr = new Future[5]; ExecutorService es = Executors.newFixedThreadPool(3); for (int i = 0; i < 5; i++) { arr[i] = es.submit(new A4()); } for (Future f : arr) { Object res = f.get(); System.out.println("结果为:" + res); } es.shutdown(); } } class A4 implements Callable { @Override public Object call() throws Exception { int res = 0; for (int i = 0; i < 10; i++) { res += i; System.out.println("Thread" + Thread.currentThread().getName()); } return res; } }
到此这篇关于Java之线程编程的4种方法实现案例讲解的文章就介绍到这了,更多相关Java之线程编程的4种方法实现内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
elasticsearch开发中data-streams使用解析
这篇文章主要为大家介绍了elasticsearch开发中data-streams使用解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-08-08SpringBoot集成ShedLock实现分布式定时任务流程详解
ShedLock是一个锁,官方解释是他永远只是一个锁,并非是一个分布式任务调度器。一般shedLock被使用的场景是,你有个任务,你只希望他在单个节点执行,而不希望他并行执行,而且这个任务是支持重复执行的2023-02-02SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成方法
这篇文章主要介绍了SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成,下面以连接mysql数据库并生成html格式的数据库结构文档为例,插件的使用方式除可以使用代码外,还可以使用Maven插件的方式,需要的朋友可以参考下2024-07-07
最新评论