如何创建和使用线程
2013-12-16 20:07
369 查看
学习多线程,肯定先要学习如何在java中创建一个线程并且使用它,下面有几种常见的创建方式:
1、创建一个类,实现Runnable接口,必须重写run方法(NormalThread1)
2、创建一个类,继承自Thread,可以重写run方法作为线程的执行体(NormalThread2)
3、采用匿名内部类的方式,实例化一个继承自Runnable接口的匿名实现类的实例
4、采用其他的方式,如线程池等。
很多情况下,子线程需要使用父线程中的一些参数作为其运行的条件,比如启动20个线程,每个线程处理第i~i+10条数据,这种情况下,就需要让各个线程能访问父线程的变量i。上述提到的几种方式,访问上还是有所却别的。
1、如果是定义类,无论是继承自Thread还是实现Runnable接口
1、创建一个类,实现Runnable接口,必须重写run方法(NormalThread1)
2、创建一个类,继承自Thread,可以重写run方法作为线程的执行体(NormalThread2)
3、采用匿名内部类的方式,实例化一个继承自Runnable接口的匿名实现类的实例
4、采用其他的方式,如线程池等。
class NormalThread1 implements Runnable { @Override public void run() { // TODO Auto-generated method stub System.out.println(Thread.currentThread().getName()+" start sleep..."); try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println(Thread.currentThread().getName()+"被强制退出了"); }finally{ System.out.println(Thread.currentThread().getName()+" is called over !"); } } } class NormalThread2 extends Thread { @Override public void run() { // TODO Auto-generated method stub System.out.println(Thread.currentThread().getName()+" start sleep..."); try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println(Thread.currentThread().getName()+"被强制退出了"); }finally{ System.out.println(Thread.currentThread().getName()+" is called over !"); } } }
executorService.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub System.out.println("t2 start sleep..."); try { Thread.sleep(SLEEP_INTERVAL); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ System.out.println("t2 is called over !"); } } });
很多情况下,子线程需要使用父线程中的一些参数作为其运行的条件,比如启动20个线程,每个线程处理第i~i+10条数据,这种情况下,就需要让各个线程能访问父线程的变量i。上述提到的几种方式,访问上还是有所却别的。
1、如果是定义类,无论是继承自Thread还是实现Runnable接口
相关文章推荐
- [转载]防止过拟合以及解决过拟合 (转)
- centos6.5下hadoop2.2.0的8节点配置兼动态添加节点测试
- 广播信道的数据链路层
- C++ - 格式化输入输出(formatted input and output) 的 详解 及 代码
- 基于 格子Boltzman方法的poiseuille流模拟
- NYOJ 74 小学生算术
- C++ - 格式化输入输出(formatted input and output) 的 详解 及 代码
- 素数表+因式分解+完美数
- 测试我们的程序性能
- wps 2012-2013 通杀漏洞(CVE-2013-3934)
- C++并发实战13:std::future、std::async、std::promise、std::packaged_task
- convertView用法
- 连连看游戏核心代码(C++实现)
- 经典数字信号处理图书的个人评述【转】
- XueTr(PC Hunter) pro 注册分析
- phpcms 2008 /preview.php SQL注入漏洞
- saiku的安装教程
- XML特殊字符和空格 换行 转义符
- saiku的安装教程
- 23 java 继承 super 关键字