线程的实现,以及相关概念的总结
- 实现多线程有以下两种途径:
1.继承Thread类(功能类,有一个子类就能实现多线程)
2.实现Runnable接口(Callable接口)
- 线程:没有进行资源的抢占
package cn.dujiang.demo;
// 线程操作类
class MyThread extends Thread{//这是一个多线程的操作类
private String name ; //定义类中的属性
public MyThread(String name){ //定义构造方法
this.name = name ;
}
@Override
public void run() {
//覆写run()方法,作为线程的主体操作方法
for (int i = 0; i < 200; i++) {
System.out.println(this.name +" --> "+ i);
}
}//本线程的功能是进行循环输出,但没有进行资源的抢占
}
public class TestDemo {
public static void main(String[] args) {
MyThread mt1 = new MyThread("线程1");
MyThread mt2 = new MyThread("线程2");
MyThread mt3 = new MyThread("线程3");
mt1 .run();
mt2 .run();
mt3 .run();
}
}
//直接调用run()方法,并不能启用多线程,所以以上代码,并没有启动多线程
- 线程:交替执行(资源进行抢占)
package cn.dujiang.demo;
// 线程操作类
class MyThread extends Thread{//这是一个多线程的操作类
private String name ; //定义类中的属性
public MyThread(String name){ //定义构造方法
this.name = name ;
}
@Override
public void run() {
//覆写run()方法,作为线程的主体操作方法
for (int i = 0; i < 200; i++) {
System.out.println(this.name +" --> "+ i);
}
}//本线程的功能是进行循环输出,但没有进行资源的抢占
}
public class TestDemo {
public static void main(String[] args) {
MyThread mt1 = new MyThread("线程1");
MyThread mt2 = new MyThread("线程2");
MyThread mt3 = new MyThread("线程3");
mt1 .start();
mt2 .start();
mt3 .start();
}
}
- 线程:避免单继承的局限性
package cn.dujiang.demo;
// 线程操作类
class MyThread implements Runnable{//这是一个多线程的操作类
private String name ; //定义类中的属性
public MyThread(String name){ //定义构造方法
this.name = name ;
}
@Override
public void run() {
//覆写run()方法,作为线程的主体操作方法
for (int i = 0; i < 200; i++) {
System.out.println(this.name +" --> "+ i);
}
}//本线程的功能是进行循环输出,但没有进行资源的抢占
}
public class TestDemo {
public static void main(String[] args) {
MyThread mt1 = new MyThread("线程1");
MyThread mt2 = new MyThread("线程2");
MyThread mt3 = new MyThread("线程3");
new Thread(mt1).start();
new Thread(mt2).start();
new Thread(mt3).start();
}
}
//以上避免了单继承局限性
℃江
點擊查看更多內(nèi)容
9人點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦