java线程的创建总结
来源:互联网 发布:河南郑州淘宝衣族 编辑:程序博客网 时间:2024/05/23 11:06
Java线程的启动有三种方式,本文通过比较,对Java线程的启动方式和线程特点做个总结!
1.继承Thread类创建线程
这种方式一般需要重写父类run方法,然后调用start()启动线程,实例如下
public class Thread1 extends Thread{ public void run() { System.out.println("I am thread1"); }}
2.实现Runnable接口创建线程
public class Thread2 implements Runnable { @Override public void run() { System.out.println("I am thread2"); }}
3.实现Callable接口创建线程
public class Thread3 implements Callable<String> { @Override public String call() throws Exception { System.out.println("I am thread3"); return "hello world"; }}
4.三种方式的启动测试
public class ThreadStartTest { @Test public void threadTest() throws Exception{ Thread1 thread1 = new Thread1(); thread1.start();//线程1启动 Runnable runnable = new Thread2(); // Runnable实现类必须显式地将一个任务附着到线程上 Thread runnableThread = new Thread(runnable); runnableThread.start();//线程2启动 Callable<String> callable = new Thread3(); FutureTask<String> futureTask = new FutureTask<String>(callable); Thread callableThread = new Thread(futureTask); callableThread.start();//线程3启动 //获得call()方法返回值 System.out.println(futureTask.get()); }}
运行结果如下图所示:
5.三种启动方式的比较
(1)通过继承Thread类来创建线程实现较为简单,但是由于Java的单继承原则,不能再继承其他的类,程序的可扩展性受到很大限制。而且从面向接口编程的角度来讲,更提倡通过实现Runnable或Callable接口来创建线程。
(2)Runnable 和Callable的区别
Callable的call()方法可以有返回值,也可以抛出异常,而Callable的run()方法则不能。对需要线程执行结果的场景使用Callable更合适
6.Java线程的状态
7.线程优先级注意事项
Java线程的优先级用整数1到10表示,数值越大优先级越高,但是优先级高的并不意味着一定会优先执行,只是几率更大而已。实际编程时在逻辑上不要依赖Java线程的优先级,不靠谱。此外Java的优先级依赖于操作系统,不同的操作系统有不同的线程优先级的取值范围,而Java的优先级只能从1到10,这就有可能出现某几个定义不同的优先级线程在有的系统里却对应着同一个优先级的重叠情况。总之不要依赖优先级!
0 0
- java线程的创建总结
- Java并发总结(一): 线程的介绍及创建
- Java多线程基础学习之线程的创建方式总结
- java线程的创建
- Java线程的创建
- Java线程的创建
- java线程的创建
- Java 线程的创建
- java线程的创建
- java基础学习总结——线程之使用Runnable接口创建线程的方法
- Java线程总结(一):创建线程的两种方式Thread和Runnable
- JAVA线程的创建与启动线程
- Java中的线程:线程的创建
- Java 线程的创建方法
- Java中线程的创建
- Java基础---线程的创建
- Java 创建线程的方法
- java中线程的创建
- HTML5本地存储Localstorage
- 今日学习札记--C++程序设计2(11.3)
- 软件测试全景图
- JS合并多个数组去重算法
- Linux设备驱动之六----异步通知的驱动程序
- java线程的创建总结
- 看代码
- 新版Windows Azure CDN管理门户正式上线
- c# 拖动窗体
- CYC-UIPickerView(省份+城市)
- 5.php File文件操作,Php的Clas,sql 初接触
- 博弈论——1
- JPA学习
- 动态设置Cell的高度