【Java线程篇】线程的基础操作(新建)

简介:
新建线程很简单,只需要用new关键字创建一个线程对象,并且将它start()即可。既,Thread t1 = new Thread(); t1.start(); 分析,start方法会新建一个线程并让这个线程执行run()方法。但是如果只是run(),则虽然可以正常执行,但是不能起到实际的作用。
如:Thread t1 = new Thread(); t1.run();原因是,run()只会在当前线程中,串行执行run()中的代码。我们需要把具体的额任务放在run()中。
例:

public class NewThread extends Thread{
    public static void main(String[] args) {
    Thread t1 = new Thread(){
    public void run() {
        System.out.println("Hellow World...");
     }
    };
    t1.start();
    }
}

或者:
public class NewThread extends Thread{
        @Override
        public void run() {
        System.out.println("Hellow World...");
        }

        public static void main(String[] args) {
            Thread t1 = new NewThread(); 
            t1.start();
    }
}

备注:使用的是继承Thread类的方法,而通常还可以通过实现Runable接口的方式来创建线程。具体区别和联系如下的demo所示:
Runable.java类内容如下:

public class RunThread implements Runnable {
    private int ticket = 25;

    @Override
    public void run() {
        for(int i = 0;i < 20;i++){
            if(this.ticket > 0){
                String name = Thread.currentThread().getName();
                System.out.println(name + "卖票"+":ticket"+this.ticket--);
            }
        }
    }
}

Thread类内容如下:

public class Thread1 extends Thread {
    private String name;
    public static int count = 10;
    public Thread1(String name){
        this.name = name;
    }

    @Override
    public void run() {
        count --;
        System.out.println("线程"+this.name+":is running."+count);
    }
}

Test类如下:

/**
 * 区别与联系:
    1, 一个类只能继承一个父类,存在局限;一个类可以实现多个接口
    2, 在实现Runable接口的时候调用Thread的Thread(Runnable run)或者Thread(Runnable run ,String name)构造方法创建进程时,使用同一个Runnable实例,如上程序中使用的都是rt,则建立的多线程的实例变量也是共享的;
    但是通过继承Thread类是不能用一个实例建立多个线程;
    故而实现Runnable接口适合于资源共享;
    当然,继承Thread类也能够共享变量,能共享Thread类的static变量;
    3, Runnable接口和Thread之间的联系:Thread源码如下
    public class Thread extends Object implements Runnable
    可以看出Thread类也是Runnable接口的子类;
 * @author T.c
 * 创建时间:2016年10月2日 上午11:43:22
 */

public class Test {
    public static void main(String[] args) {
        new Thread1("tc").start();
        new Thread1("tcc").start();
        RunThread rt = new RunThread();
        new Thread(rt,"r1").start();
        new Thread(rt,"r2").start();
    }

}

第一种Thread通过构造法方法传递线程名称Thread1(String name)。第二种Runable则是直接使用Thread(Runnable target, String name)的方式。区别于联系见Test类说明,根据实际的需求合理选择两种方式。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值