线程1

java线程

  1. 进程:是一个程序执行的实体。它是表示资源分配的基本单位,又是调度运行的基本单位。假如,我们运行一个自己的程序,系统就创建一个进程,为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。

  2. 线程:线程是进程中执行运算的最小单位,是程序执行的一条路径,即线程存在于进程之中,一个进程至少由一个或多个线程组成。但是一个线程只属于一个进程。

  3. .在java中多线程的实现有两种方式

    • 继承thread类

    `
    class MyThread1 extends Thread{
    @Override
    public void run() {
    super.run();
    for(int i=0;i<50;i++) {
    System.out.println(getName()+”开始下载了 i=”+i);
    }
    }
    }

    class MyThread2 extends Thread{
        @Override
        public void run() {
        super.run();
        for(int i=0;i<50;i++) {
            System.out.println(getName()+"开始下载了  i="+i);
            }
        }
    }
    
    
    public class Thread2 {
    
    public static void main(String[] args) {
        System.out.println("这是主线程");
        for(int i=0;i<50;i++) {
            System.out.println("这是主线程  i="+i);
        }
    
        MyThread1 myThread1=new MyThread1();
        myThread1.setName("线程1");
        myThread1.start();
    
        MyThread2 myThread2=new MyThread2();
        myThread2.setName("线程2");
        myThread2.start();
    
    
        }
    
    }
    

    `

    2 . 实现Runnable

    `
    class RunnableImpl implements Runnable{
    
        @Override
        public void run() {     //必须实现run方法
        for(int i=0;i<50;i++) {
            System.out.println(Thread.currentThread().getName()+"开始下载了  i="+i);
            }
    }
    
    
    public class TestThread {
    
        public static void main(String[] args) {
    
        获取当前运行子线程的名字
        System.out.println(Thread.currentThread().getName()+"开始运行");
        System.out.println("子线程运行");
    
        RunnableImp runnableImpl = new RunnableImpl();      //创建Runnable子类对象
        Thread thread = new Thread(runnableImpl);           //创建Thread对象,并传入Runnale子类的对象
        thread.setName("线程");       
        thread.start();         //启动线程
    
        }
    }
    
    `
    
    • 那么对于这两种创建线程的方式,第一种继承Thread,代码量少简单,但是切记java都是单继承的,如果你的一个线程类有了其他父类,那么这种方法就失效了;第二种实现Runnable接口,代码量多,有点繁琐,执行效率不如第一种方法高,但是可以继承其它父类,不会影响线程运行。所以,在java编程中一般都会使用实现接口的方式创建线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值