JAVA语言有哪两种创建线程的方式?
Vivian 2018-07-03 来源 : 阅读 705 评论 0

摘要:本文主要向大家介绍了JAVA语言有哪两种创建线程的方式,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言有哪两种创建线程的方式,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

/*
四个窗口同时卖票
 
因为是同时,所以使用多线程
创建4个线程,都是卖票
因为都是卖票,说明四个线程的任务是一样的
只需要定义一个类继承Thread
 
*/
// 以下是用第一种创建线程的方法(具体方法在我的上一篇博客中有介绍),但是并不符合要求
// 线程和线程任务是绑定在一起的
/*class Ticket extends Thread{
    // 把num设置成静态的实现各个线程共享同一个num
    // 但是万一情况复杂,不可能把所有的成员变量都设置成静态的
    // 所以,这种创建线程的方法用在这里并不合适
    private static int num = 50;
 
    public void run(){
        //死循环,会一直进行下去
        while(true){
            if(num>0){
                System.out.println(Thread.currentThread().getName()+"...sale..."+num--);
            }
        }
    }
}
class test{
    public static void main(String[] args){
        // 当num等其他成员变量不是静态的时候,每一个线程初始的情况都是一样的,并不符合实际要求
        // 但是又不能把所有的成员变量都定义成静态的,所以就有了第二种创建线程的方式
        Ticket t1 = new Ticket();
        Ticket t2 = new Ticket();
        Ticket t3 = new Ticket();
        Ticket t4 = new Ticket();
 
        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}
*/
/*
为了解决四个线程共享票的问题,使用静态方法肯定是不行的
需要使用创建线程的第二种方式:
1、创建实现了Runnable接口的子类
2、重写Runnable接口中的run方法
3、创建实现了Runnable接口的子类的对象
4、创建Thread类的对象,也就是在创建线程
5、把实现了Runnable接口的子类对象作为参数传递给Thread类的构造方法
 
把线程任务进行了描述,也就是面向对象
线程任务和线程对象的分离,线程执行什么任务不再重要,只要是实现了Runnable接口的子类对象
都可以作为参数传递给Thread的构造方法
 
实现接口的同时,也可以继承父类
 
*/
//下面用第二种方法创建线程,解决上述问题
//1、创建实现了Runnable接口的子类,这是一个描述线程任务的类
class Ticket implements Runnable{
    public int num = 50;
 
    //2、重写Runnable接口中的run方法
    public void run(){
        while(true){
            if(num>0){
                System.out.println(Thread.currentThread().getName()+"...sale..."+num--);               
            }
        }
    }
}
class test{
    //3、创建实现了Runnable接口的子类的对象
    public static void main(String[] args){
        Ticket t = new Ticket();
        //4、创建Thread类的对象,也就是在创建线程
        //5、把实现了Runnable接口的子类对象作为参数传递给Thread类的构造方法
        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);
        Thread t3 = new Thread(t);
        Thread t4 = new Thread(t);
 
        t1.start();
        t2.start();
        t3.start();
        t4.start();    
    }
}

以上就是职坐标整理发布关于JAVA的介绍,先祝大家对它有了一定的了解吧,了解更多内容,请关注职坐标编程语言JAVA频道!


本文由 @Vivian 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程