温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中怎么实现线程编程

发布时间:2021-08-02 11:35:54 来源:亿速云 阅读:112 作者:Leah 栏目:开发技术

Java中怎么实现线程编程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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中怎么实现线程编程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI