博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA创建线程
阅读量:6820 次
发布时间:2019-06-26

本文共 2059 字,大约阅读时间需要 6 分钟。

    要想让对象能具有多线程功能,只需要继承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,表示由这个实例对象来执行。

class ComputerSum{    int sum;    public void setSum(int n){        sum=n;    }    public int getSum(){        return sum;    }}class People extends Thread{    int timeLength;    ComputerSum CS;    People(String s,int timeLength,ComputerSum sum){        setName(s);//调用Thread类的setName()        this.timeLength=timeLength;        CS=sum;    }        public void run(){        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 class ChildThread{    public static void main(String args[]){        People teacher,student;        ComputerSum sum=new ComputerSum();        teacher=new People("老师",200,sum);        student=new People("学生",200,sum);        teacher.start();        student.start();    }}

 

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

class A implements Runnable{    Thread th;    A(){         th = new Thread(this, "Demo Thread");    }    public void run(){        System.out.println("class A实现了Runnable接口,并且还可以继承别的类");    }}public class RunnableThread{    public static void main(String args[]){        A a= new A();        a.th.start();        System.out.println("这是主线程");            }}

 

转载于:https://www.cnblogs.com/scf141592/p/5767155.html

你可能感兴趣的文章
JBPM4或Activiti5的流程任务分发与汇总
查看>>
android4.0 在ubuntu10.04(64位)上的下载与编译
查看>>
记一次在 Linux 上创建 Django 应用的过程
查看>>
C++反射机制的实现
查看>>
ace admin模板实现伪无刷新模式的方法
查看>>
LayaAir 自旋转的小球 横向移动
查看>>
翻译WifiConfiguration类
查看>>
Win2008 IIS 7.0+php,MySQL,Zend,phpMyadmin配置图解
查看>>
微博的理想类型(刘德寰)
查看>>
伍雨霏-懂游戏的云服务如何保驾护航
查看>>
姜正林-CIO职业规划点滴感受
查看>>
win8下获取注册表权限
查看>>
js笔试题2
查看>>
Custom TabBarController
查看>>
用Myeclipse创建PhoneGap应用程序
查看>>
开源 java CMS - FreeCMS2.8 站内信
查看>>
kubeadm初始化kubernetes cluster的一点经验
查看>>
ZooKeeper应用案例
查看>>
springboot(二):thymeleaf模板开发
查看>>
高通camera架构
查看>>