Java之线程编程的4种方法实现案例讲解

网友投稿 226 2022-10-08


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;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:虚拟私有网络的介绍(虚拟私有网络是什么)
下一篇:[IDA] 在IDA里如何自定义数据结构(ida国际龙奖)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~