线程的2种实现方式
来源:互联网 发布:mac 涂鸦软件 编辑:程序博客网 时间:2024/06/07 10:36
1.继承Thread类
声明一个内部(外部)类,假如名字叫做 Thread1,继承Thread类,重写(Override)其中的run方法。
定义一个类,里面再定义一个Thread1类型的对象,调用start()方法。
举个例子吧:
public class ThreadTest1 {
public static void main(String[] args){
Thread1 t1 = new Thread1();
t1.start();
}
}
class Thread1 extends Thread{
@Override
public void run(){
for(int i=0;i<100;i++){
System.out.println("Thread 111111-------"+i);
}
}
}
2.实现Runnable接口
声明一个内部(外部)类,假如名字叫做MyThread,实现Runnable接口,实现其中的run方法。
定义一个类,里面定义一个Thread类型的对象,把MyThread的对象当作参数传递进去,调用start方法。
public class ThreadTest2 {
public static void main(String[] args){
MyThread mt = new MyThread();
Thread t2 = new Thread(mt);
//上面2行可以写成 Thread t2 = new Thread(new MyThread());
t2.start();
}
}
class MyThread implements Runnable{
@Override
public void run(){
for(int i=0;i<100;i++){
System.out.println("Thread 22222-------"+i);
}
}
}
3.比较一下两种方法吧
从我自己的理解来看,实现Runnable接口的代码更健壮。
原因很简单,java是单继承的,从长远假设来看,也许这个类改天想干点其它的事情,必须再继承某个类,因为你已经继承了Thread类,你就不能再继承了。
接口之所以灵活就在于,你可以实现多个接口,而且实现接口了还可以继续继承一个类,所以呢,给程序员带来更大的灵活性。
声明一个内部(外部)类,假如名字叫做 Thread1,继承Thread类,重写(Override)其中的run方法。
定义一个类,里面再定义一个Thread1类型的对象,调用start()方法。
举个例子吧:
public class ThreadTest1 {
public static void main(String[] args){
Thread1 t1 = new Thread1();
t1.start();
}
}
class Thread1 extends Thread{
@Override
public void run(){
for(int i=0;i<100;i++){
System.out.println("Thread 111111-------"+i);
}
}
}
2.实现Runnable接口
声明一个内部(外部)类,假如名字叫做MyThread,实现Runnable接口,实现其中的run方法。
定义一个类,里面定义一个Thread类型的对象,把MyThread的对象当作参数传递进去,调用start方法。
public class ThreadTest2 {
public static void main(String[] args){
MyThread mt = new MyThread();
Thread t2 = new Thread(mt);
//上面2行可以写成 Thread t2 = new Thread(new MyThread());
t2.start();
}
}
class MyThread implements Runnable{
@Override
public void run(){
for(int i=0;i<100;i++){
System.out.println("Thread 22222-------"+i);
}
}
}
3.比较一下两种方法吧
从我自己的理解来看,实现Runnable接口的代码更健壮。
原因很简单,java是单继承的,从长远假设来看,也许这个类改天想干点其它的事情,必须再继承某个类,因为你已经继承了Thread类,你就不能再继承了。
接口之所以灵活就在于,你可以实现多个接口,而且实现接口了还可以继续继承一个类,所以呢,给程序员带来更大的灵活性。
0 0
- 线程的2种实现方式
- 线程的2种实现方式
- 2、线程实现的两种方式
- 线程-实现线程的两种方式
- 线程的实现方式
- 线程的实现方式
- 线程的实现方式
- 线程的实现方式
- Android线程、线程、线程的实现方式!
- 实现线程的两种方式
- 实现线程的两种方式
- java线程的三种实现方式
- 线程的两种不同实现方式
- 线程实现的三种方式
- 线程的两种实现方式
- 实现线程的几种方式
- 实现线程的两种方式
- java实现线程的两种方式
- R语言向量_向量化的ifelse()函数
- css3实现三角形
- LLVM学习笔记(11)
- Linux安装gcc编辑器教程
- 欢迎使用CSDN-markdown编辑器
- 线程的2种实现方式
- 单键索引还是组合索引
- java.lang.OutOfMemoryError: PermGen space 解决办法
- codeblocks配置GTK+
- 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping"解决方案
- 集成支付宝时:JSON.parse: unexpected character at line 1 column 1 of the JSON data
- 生成JSON数据--Gson(谷歌)方法
- Robot Framework自动化测试-切换浏览器窗口
- vmWare station安装cent os