JAVA多线程机制第二弹:(代码)Thread的子类创建线程

在Java中,线程对象的创建是用Threa类或者它的子类创建。

在编写Thread类的子类时,需要重写父类的run()方法,其目的是规定线程的具体操作,否则线程就没有开始的地方

在这里,做一个小小总结:

 ··在线程的编写的时候,要重写父类的run()方法,在run()里写线程相关功能;

 ··在线程的调用的时候,线程必须要调用start()方法(从父类继承的方法)通知JVM,这样JVM就会知道又有一个新一个线程排队等候切换了

在这里,我们为了体现多线程交替使用CPU资源的,举蚂蚁吃蛋糕的例子,即每个小蚂蚁是一个线程,蛋糕是资源(即CPU),好了,

我们开始吧!

第一步:创建一个主类,一开始只有

 public static void main(String[] args){
}

最后在添加方法和调用,最后运行前是这样的

package com.suzhou.dajiang;

public class main {
    public static void main(String[] args) {
        Cake cake = new Cake();
        int size = 10;
        cake.setSize(size);
        System.out.println("蛋糕一个有"+size+"份");
        Ant antRed = new Ant("红蚂蚁",cake);
        Ant antblack = new Ant("黑蚂蚁",cake);
        antRed.start();
        antblack.start();

    }
}

第二步:做一个蛋糕

package com.suzhou.dajiang;

public class Cake {
    int size;


    public void setSize(int n){
        size = n;
    }

    public int getSize(){
        return size;
    }

    public void lost(int m){//蛋糕剩余
        if(size-m > 0){
            size = size -m;
        }

    }
}

 第三步:请最少两个蚂蚁过来(及最少两个线程,能体现线程轮流使用的效果)

package com.suzhou.dajiang;

public class Ant extends Thread{

    Cake cake;
    public Ant(String name, Cake cake){
        this.cake = cake;
        setName(name);
    }


    @Override
    public void run() {//run方法,让线程跑起来
        while (true){//死循环,让线程不停跑
            int n=2;//每次蚂蚁吃的蛋糕数量
            System.out.println(getName()+"吃"+n+"份蛋糕");//打印谁吃了蛋糕
            cake.lost(n);//开始吃
            System.out.println(getName()+"发现蛋糕还剩"+cake.getSize()+"份蛋糕");//剩余蛋糕数
            cake.getSize();
            try {//sleep()方法,让线程每循环一次休息一秒;然而错误提示,直接alt+ctrl+t抛出异常,就好喽
                sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (cake.getSize()<=2){
                System.out.println("结束了");
                return;//结束,跳出循环
            }
        }
    }
}

编写线程子对象的第一步哈,就是重写run()方法,记住呀!

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值