通过Thread和Runnable创建线程的两种方式(举例说明)

线程与进程:

①在多任务操作系统中,每个运行的程序都是一个进程,用来执行不同的任务,而一个进程中可以有多个执行单元同时运行,来同时完成一个或多个程序任务,这些执行单元就成为线程。
②每一个进程中至少存在一个线程。当一个Java程序启动时,就会产生一个进程,该进程回默认创建一个线程,在这个线程上运行main()方法中的代码。

在这里插入图片描述

两者的区别:

调度:
进程拥有资源; 线程是调度和分派的基本单位; 同一进程中线程的切换不会引起进程的切换,但是进程与线程间的切换会导致资源的切换。

并发性:
进程之间可以并发执行,线程之间也可以并发执行
线程的并发性更高

拥有资源:
线程不能拥有资源,只有进程才可以

线程的系统开销比进程的要小

我们来看一下使用Tread和Runnable创建线程的代码:

package com.company;

import java.util.*;
import java.util.Properties;
public class Task {
    public static void main(String[] args) throws Exception{
            ThreadClassOne t1=new ThreadClassOne();
            if(t1 instanceof  Thread)
                t1.start();  //调用start方法开启线程
            ThreadClassTwo t2=new ThreadClassTwo();
            if(t2 instanceof Runnable)
                t2.start();
    }
}
 class ThreadClassOne extends Thread  {
    private String name;  //使用继承Thread类的方式来创建一个线程
    public void run(){      //重写run方法就实现了创建我们自己的线程
        for(int i=0;i<10;i++){
            if(i%2!=0){
                System.out.print(i);
                if(i<10){
                    System.out.print(" ");
                }
            }

        }
    }

}
class ThreadClassTwo  implements Runnable {
    private String name;        //通过实现Runnable接口来创建自己线程
    private Thread mythread;

    public void run(){
        for(int i=0;i<11;i++){
            if(i%2==0){
                System.out.print(i);
                if(i<11)
                    System.out.print(" ");
            }

        }
    }
    public void start(){
        if(mythread==null){
            mythread=new Thread(this);
            mythread.start();
        }
    }

}
/*归纳:
创建线程的两种方式对比

    实现Runnable创建线程时,线程类只是实现了Runnable接口,还可以继承其他的类。

    继承Thread类创建线程时,线程类继承了Thread类,不能再继承其他类。
    不过这种方式编写简单,如果需要访问当前线程,则无需使用 Thread.currentThread() 方法,
    直接使用this即可获得当前线程。

 */

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值