zoukankan      html  css  js  c++  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,表示由这个实例对象来执行。

    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("这是主线程");
            
        }
    } 
  • 相关阅读:
    vi、vim选中区域(矩形块)visual block(块模式)批量删注释
    [网页设计]CSS之浮动float
    [网页设计]前端工程师应该具备的三种思维
    [网页设计]auto的使用
    [网页设计]模仿某网站招聘列表
    [网页设计]前端知识查漏补缺篇(一)
    [网页设计]c ss高效开发实战看完了,Bootstrap学习是关键
    [网页设计]前端优化还可以这么优化!
    [网页设计]HTML DOM(学习笔记一)
    [网页设计]HTML DOM(学习笔记二)
  • 原文地址:https://www.cnblogs.com/scf141592/p/5767155.html
Copyright © 2011-2022 走看看