线程的两种创建及线程池——学习二
来源:互联网 发布:汉诺塔递归算法机制 编辑:程序博客网 时间:2024/06/05 03:36
一、使用实现接口Runnable来创建新的多线程。
创建分四步
1.实现接口Runnable并重写它唯一的方法run()
public class MyThreadTest implements Runnable{
public void run(){
程序code
}
}
2.创建实现Runnable类的对象,其类型是Runnable
Runnable r1 = new MyThreadTest();
3.由Runnable创建一个Thread的对象
Thread t = new Thread(r1);
4.由thread 的对象启动线程
t.start();
package com.bing.jia;public class MyThreadTest implements Runnable{public void run(){for(int i=0;i<100;i++){if(i%10==0){System.out.println(Thread.currentThread().getName()+"-------"+i);}System.out.println(Thread.currentThread().getName()+" "+i);try {Thread.sleep(1000*2);//Thread.sleep(2000, 10000);System.out.println("线程睡眠2秒");} catch (InterruptedException e) {e.printStackTrace();}}}public static void main(String[] args) {Runnable r1 = new MyThreadTest();Runnable r2 = new MyThreadTest();new Thread(r1).start();new Thread(r2).start();}}
执行结果:
Thread-0-------0Thread-0 0Thread-1-------0Thread-1 0线程睡眠2秒线程睡眠2秒Thread-0 1Thread-1 1
二、使用继承Thread类的方法来创建新的多线程
这种方法已经不被推荐使用。如果创建的线程很多的话,推荐使用线程池来创建。
package com.bing.jia;public class MyThreadTest extends Thread{public void run(){for(int i=0;i<100;i++){if(i%10==0){System.out.println(Thread.currentThread().getName()+"-------"+i);}System.out.println(Thread.currentThread().getName()+" "+i);try {Thread.sleep(1000*2);//Thread.sleep(2000, 10000);System.out.println("线程睡眠2秒");} catch (InterruptedException e) {e.printStackTrace();}}}public static void main(String[] args) {new Thread().start();new Thread().start();}}执行结果:
Thread-0-------0Thread-0 0Thread-1-------0Thread-1 0线程睡眠2秒Thread-0 1线程睡眠2秒Thread-1 1线程睡眠2秒Thread-0 2线程睡眠2秒Thread-1 2
注意:可见,只要现实的情况要求保证新建线程彼此相互独立,各自拥有资源,且互不干扰,采用哪个方式来创建多线程都是可以的。因为这两种方式创建的多线程程序能够实现相同的功能。
警告:不论是继承thread还是实现Runnable来创建线程,都不要直接调用run()方法,这样只会执行线程中的任务,但是它不会创建一个线程。不论以何种方式创建线程,都是用Tread.start()方法,这个方法将创建一个执行run()方法的新线程。
阅读全文
0 0
- 线程的两种创建及线程池——学习二
- Java线程——两种创建线程的方式
- java线程学习——创建线程的两种方法
- 创建线程的两种方法,及之间的区别
- 线程的两种创建方式及简单的对比
- 线程的两种创建方式及优劣比较
- Java线程的两种创建方式及优劣比较
- 创建线程的两种方式及原理
- 线程创建的两种方式及区别
- 【JAVA多线程】-线程的两种创建方式及比较
- 线程的两种创建方式及比较
- java中创建线程的两种方法及比较
- java多线程学习(二)——线程的创建
- linux多线程学习(二)—线程的创建和退出
- 黑马程序员——java学习9(创建线程的两种方式)
- Java学习笔记——线程两种常用的创建调用方法
- Java——线程创建两种方式的对比
- Java——创建线程的两种方式
- Hx学习-★sqlserver查询数据库中有多少个表、试图等
- 打印Html页面自动分页
- 安装tomcat遇到no such file or directory
- S5PV210系列 (裸机十七) 之 ADC
- 知乎用户分布研究
- 线程的两种创建及线程池——学习二
- Floyd 算法 和 非递归算法寻路
- 在Ubuntu中使用apt-get的时候,始终显示“E:无法定位软件包”,E: 无法获得锁 /var/lib/apt/lists/lock
- 用Crt系列函数分析windows程序的内存泄露
- 在 Angularjs 中 ui-sref 和 $state.go 如何传递参数
- hbase的createTable
- LeetCode 66.Plus One
- python学习之——模块(import + from * import *)
- Android kswapd-->lowmemorykiller启动和扫描过程