码迷,mamicode.com
首页 > 编程语言 > 详细

Callable,Runnable和Thread三种方式创建线程

时间:2018-02-01 22:05:27      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:call   port   gpo   接口   row   task   线程   exception   param   

参考网址:http://blog.csdn.net/xyw591238/article/details/51900325

目录结构如下:

技术分享图片

CallableMethod类

/**
 * 
 */
package test;

import java.util.concurrent.Callable;

/**
*  @author  lei_chunhui
*  @date 2018年2月1日 下午8:42:05
*/
/**
 * @author leichunhui
 *
 * 2018年2月1日
 */
public class CallableMethod implements Callable<String> {

	
	@Override
	public String call() throws Exception {
		System.out.println("callable方式创建线程");
		return null;
	}

}

  RunnableMethod类:

/**
 * 
 */
package test;
/**
*  @author  lei_chunhui
*  @date 2018年2月1日 下午8:27:12
*/
/**
 * @author leichunhui
 *
 * 2018年2月1日
 */
public class RunnableMethod implements Runnable {
	@Override
	public void run() {
		System.out.println("runnable方式创建线程");
	}

}

  ThreadMethod类

/**
 * 
 */
package test;

/**
*  @author  lei_chunhui
*  @date 2018年2月1日 下午8:54:03
*/
/**
 * @author leichunhui
 *
 *         2018年2月1日
 */
public class ThreadMethod extends Thread {
	public void run() {
		System.out.println("继承Thread方式创建线程");
	}
}

  Test测试类

/**
 * 
 */
package test;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

/**
*  @author  lei_chunhui
*  @date 2018年2月1日 下午8:29:56
*/
/**
 * @author leichunhui
 *
 * 2018年2月1日
 */
public class Test {

	/**   
	*    
	* 描述:TODO   
	* 创建人:leichunhui   
	* 创建时间:2018年2月1日   
	* 修改人:leichunhui   
	* 修改时间:2018年2月1日 
	* 修改备注: 
	* 方法名:main
	* 返回类型:void 
	* @param args 
	* @version    
	*    
	*/
	public static void main(String[] args) {
		// 重写runnable接口的run方法实现
		System.out.println("Runnable方式创建线程开始");
		RunnableMethod runnableMethod1=new RunnableMethod();
		RunnableMethod runnableMethod2=new RunnableMethod();
		Thread thread1=new Thread(runnableMethod1);
		Thread thread2=new Thread(runnableMethod2);
		
		thread1.start();
		thread2.start();
		System.out.println("thread1的线程名字为:"+thread1.getName()+"线程id为:"+thread1.getId());
		System.out.println("thread2的线程名字为:"+thread2.getName()+"线程id为:"+thread2.getId());
		
		System.out.println("Runnable方式创建线程结束");
		System.out.println("Callable方式创建线程开始");
		CallableMethod callableMethod3=new CallableMethod();
		CallableMethod callableMethod4=new CallableMethod();
		
		FutureTask<String> futureTask3=new FutureTask<>(callableMethod3);
		FutureTask<String> futureTask4=new FutureTask<>(callableMethod4);
		
		Thread thread3=new Thread(futureTask3);
		Thread thread4=new Thread(futureTask4);
		
		thread3.start();
		thread4.start();
		System.out.println("thread3的线程名字为:"+thread3.getName()+"线程id为:"+thread3.getId());
		System.out.println("thread4的线程名字为:"+thread4.getName()+"线程id为:"+thread4.getId());
		System.out.println("Callable方式创建线程结束");
		
		
		System.out.println("Thread继承方式创建线程开始");
		ThreadMethod thread5=new ThreadMethod();
		ThreadMethod thread6=new ThreadMethod();
		thread5.start();
		thread6.start();
		System.out.println("thread5的线程名字为:"+thread5.getName()+"线程id为:"+thread5.getId());
		System.out.println("thread6的线程名字为:"+thread6.getName()+"线程id为:"+thread6.getId());
		System.out.println("Thread继承方式创建线程结束");
	}

}

  

结果:

Runnable方式创建线程开始
runnable方式创建线程
thread1的线程名字为:Thread-0线程id为:10
thread2的线程名字为:Thread-1线程id为:11
Runnable方式创建线程结束
Callable方式创建线程开始
runnable方式创建线程
thread3的线程名字为:Thread-2线程id为:12
thread4的线程名字为:Thread-3线程id为:13
callable方式创建线程
callable方式创建线程
Callable方式创建线程结束
Thread继承方式创建线程开始
thread5的线程名字为:Thread-4线程id为:14
继承Thread方式创建线程
继承Thread方式创建线程
thread6的线程名字为:Thread-5线程id为:15
Thread继承方式创建线程结束

 

Callable,Runnable和Thread三种方式创建线程

标签:call   port   gpo   接口   row   task   线程   exception   param   

原文地址:https://www.cnblogs.com/lchzlp/p/8401275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!