ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

技术问答-13 Java线程的实现方式

2021-04-13 20:53:45  阅读:116  来源: 互联网

标签:13 Java util concurrent 线程 import Test java public


1. 继承Thread类

在这里插入图片描述

package test;import java.util.concurrent.TimeUnit;public class Test  extends Thread{public void run() {for(int i=0;i<10;i++){try {
				TimeUnit.SECONDS.sleep(2);
				System.out.println("线程啊!"+Thread.currentThread().getName());} catch (InterruptedException e) {
				e.printStackTrace();}}}public static void main(String[] args) {
		Test myThread1 = new Test();
		Test myThread2 = new Test();
		myThread1.start();
		myThread2.start();}}

2.实现Runnable接口

在这里插入图片描述

package test;import java.util.concurrent.TimeUnit;public class Test  implements Runnable{public void run() {for(int i=0;i<10;i++){try {
				TimeUnit.SECONDS.sleep(2);
				System.out.println("线程啊!"+Thread.currentThread().getName());} catch (InterruptedException e) {
				e.printStackTrace();}}}public static void main(String[] args) {
		Thread myThread1 = new Thread(new Test());
		Thread myThread2 = new Thread(new Test());
		myThread1.start();
		myThread2.start();}}

3.实现Callable接口 通过FutureTask创建线程 可以获取线程返回结果

在这里插入图片描述

package test;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;import java.util.concurrent.TimeUnit;public class Test  implements Callable<String>{public String call() {try {
				TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {
				e.printStackTrace();}return "测试Callable";}public static void main(String[] args) {
		Test test = new Test();
		FutureTask<String> ft = new FutureTask<String>(test);
		Thread thread = new Thread(ft);
		thread.start();try{
			System.out.println(ft.get());}catch(Exception e){
			e.printStackTrace();}}}

4.使用ExecutorService

在这里插入图片描述

import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.TimeUnit;public class Test implements Callable<String> {public String call() {try {
			TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {
			e.printStackTrace();}return "测试Callable";}public static void main(String[] args) {
		ExecutorService pool = Executors.newFixedThreadPool(1);
		Future<String> f = pool.submit(new Test());
		pool.shutdown();try {// 有返回值 阻塞等待
			System.out.println(f.get());} catch (Exception e) {
			e.printStackTrace();}
		ExecutorService pool2 = Executors.newFixedThreadPool(1);//不阻塞
		pool2.execute(new testR());}}class testR implements Runnable {@Overridepublic void run() {
		System.out.println("测试线程!!");}}

标签:13,Java,util,concurrent,线程,import,Test,java,public
来源: https://blog.51cto.com/u_12198094/2704027

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有