Java之线程编程的4种方法实现 Java之线程编程的4种方法实现案例讲解
一只可爱的小狐狸 人气:0想了解Java之线程编程的4种方法实现案例讲解的相关内容吗,一只可爱的小狐狸在本文为您仔细讲解Java之线程编程的4种方法实现的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Java线程编程,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; } }
加载全部内容