java 线程由谁创建_JAVA创建线程

要想让对象能具有多线程功能,只需要继承java.lang.Thread类或是实现java.lang.Runnable接口。Java的线程是通过java.lang.Thread类来实现的。当生成一个Thread类对象之后,一个新的线程就产生了。通过该实例对象可以启动、终止、挂起线程等。它的构造方法如下:

public Thread(ThreadGroup group,Runnable target,String name);

第一个参数是线程所属的线程组;target是实际执行线程体的目标对象,它必须实现接口Runnable;name是线程名

此外,当某个参数为null时,有下面的几个方法

public Thread();

public Thread(Runnable target);

public Thread(Runnable target,String name);

public Thread(String name);

public Thread(ThreadGroup group,Runnable target);

public Thread(ThreadGroup group,String name);

任何实现接口Runnable的对象都可以作为一个线程的目标对象。Thread类本身也实现了接口Runnable,因此可以通过两种方法实现线程体:

(1)、定义一个线程类,继承Thread类并重写其中的run()方法。这时在初始化这个类的实例时,target可为null,表示由这个实例对象来执行。

classComputerSum{intsum;public void setSum(intn){

sum=n;

}public intgetSum(){returnsum;

}

}class People extendsThread{inttimeLength;

ComputerSum CS;

People(String s,inttimeLength,ComputerSum sum){

setName(s);//调用Thread类的setName()

this.timeLength=timeLength;

CS=sum;

}public voidrun(){for(int i=1;i<=5;i++){int m=CS.getSum();

CS.setSum(m+1);

System.out.println("我是"+getName()+",和:"+CS.getSum());

}try{

sleep(timeLength);

}catch(InterruptedException e){}

}

}public classChildThread{public static voidmain(String args[]){

People teacher,student;

ComputerSum sum=newComputerSum();

teacher=new People("老师",200,sum);

student=new People("学生",200,sum);

teacher.start();

student.start();

}

}

(2)、提供一个实现接口Runnable的类作为一个线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把目标传给这个线程实例,由该目标对象提供线程体run()。

class A implementsRunnable{

Thread th;

A(){

th= new Thread(this, "Demo Thread");

}public voidrun(){

System.out.println("class A实现了Runnable接口,并且还可以继承别的类");

}

}public classRunnableThread{public static voidmain(String args[]){

A a= newA();

a.th.start();

System.out.println("这是主线程");

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值