Java多线程—097两种方法实现多线程

一、两种方法实现多线程:

很多时候程序员无法选择何时在代码中出现线程,但是在基本的Web库类、Servlet中,多线程都是很重要的实现并发的方式。

1.继承Thread类

class 类名 extends Thread{
run(){//覆盖run方法
线程处理的程序
}
}

/**
 * 用继承Thread类的方法创建线程
 */
public class ThreadY extends Thread {
    //标记线程是否运行
    private boolean statues = false;
    //开启线程,覆盖父类的start方法
    public void start(){
        //把状态置为true表示需要运行
        this.statues = true;
        //调用父类的指针执行start?
        super.start();
    }
    //需要线程处理的程序,覆盖父类Thread的run方法
    public void run(){
        int i=0;
        try{
            while(statues){
                this.setName("Thread " + i++);
                System.out.println("线程"+this.getName()+"正在运行");
                //将当前线程休眠200秒
                Thread.sleep(200);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(this.getName() + "运行结束");
    }
    //设置线程是否运行的状态
    public void setStatues(boolean statues){
        this.statues = statues;
    }
    //启动线程
    public void startThreadY(){
        System.out.println("开启线程");
        this.start();
    }
    //停止线程
    public void stopThreadY(){
        System.out.println("关闭线程");
        this.setStatues(false);
    }
}

2.实现Runnable接口

class 类名 implements Runnable{
run(){//覆盖run方法
线程处理的程序
}
}

/**
 * 用实现Runnable接口的方法创建线程
 */
public class ThreadX implements Runnable{
    private Date runDate;
    //覆盖Thread中的run方法
    @Override
    public void run() {
        System.out.println("线程X启动");
        this.runDate=new Date();
        System.out.println("启动时间:"+runDate.toString());
    }
}

同时启动多个线程:

public class StartThread {
    public void startThreadY(){
        //创建实例
        ThreadY threadY = new ThreadY();
        //启动线程Y
        threadY.startThreadY();
        try{
            threadY.sleep(500);
        }catch (InterruptedException e){
            e.printStackTrace();
        }
        threadY.stopThreadY();
    }

    public void startThreadX(){
        //接口new 实现类,可以用同一个接口实现不同的功能,多态的体现,依赖抽象,而不是依赖具体
        Runnable runnX = new ThreadX();
        Thread thread = new Thread(runnX);
        //ThreadX thread = new ThreadX();
        //start方法启动线程
        thread.start();
    }
    public static void main(String[] args){
        StartThread s = new StartThread();
        s.startThreadX();
        s.startThreadY();
    }
}


参考:《Java程序设计经典300例》《Java编程思想》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值