来自 系统操作 2019-10-09 16:59 的文章
当前位置: 六合联盟网 > 系统操作 > 正文

线程之线程的开辟方法,完结多线程的二种守旧

java 宗旨编制程序——线程之线程的开拓方法(二),java开荒方法

1.继承Thread类

  Thread类是贰个现实的类,不是抽象类。

package se.thread;

import java.util.Date;

public class ThreadTest extends  Thread {

    public int time;
    public String name;

    ThreadTest(int time,String name){

        this.name=name;
        this.time=time;
    }

    public void run(){

        while(true){
            try {
                System.out.println("用户"+this.name+"正在休息,时间:"+new Date());
                Thread.sleep(this.time);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }


    public static void main(String[] args) {

        ThreadTest threadTest1 = new ThreadTest(100,"jack");
        threadTest1.start();

        ThreadTest threadTest2 = new ThreadTest(200,"lolo");
        threadTest2.start();


    }

}

2.实现Runable接口

package se.thread;

import java.util.Date;

public class TreadTest2 implements Runnable {


    public int time;
    public String name;

    public TreadTest2(int time,String name){

        this.name=name;
        this.time=time;
    }



    @Override
    public void run() {
        while(true){
            try {
                System.out.println("用户"+this.name+"正在休息,时间:"+new Date());
                Thread.sleep(this.time);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {

        TreadTest2 threadTest2 = new TreadTest2(3000,"004");
        TreadTest2 treadTest22 = new TreadTest2(2000,"125");
        new Thread(threadTest2).start();
        new Thread(treadTest22).start();

    }
}

3.选择Thread类还是Runable接口?

  1.借使只是想重写Runable接口实际不是重写Thread别的艺术,则选取Runable接口。

  2.比如子类承袭了其他非Thread类,则不得不通过完成Runable接口来贯彻run()的重写。

大旨编程——线程之线程的开辟方法(二),java开采方法 1.承继Thread类 Thread类是三个切实的类,不是抽象类。 package se.thread; import ja...

第一种:创立三个类继承Thread类,重写Thread类的run方法,代码如下:

class Thread1 extends Thread {    @Override    public void run() {        while (true) {            try {                Thread.sleep(1000);// 线程睡眠1s            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            System.out.println(Thread.currentThread().getName;// 打印当前线程名称        }    }}public class Test {    public static void main(String[] args) {        Thread1 thread1 = new Thread1();        thread1.start();//启动线程    }}

第三种艺术:创设贰个类完毕Runable接口,重写Runable接口的run方法,并将此类的对象作为参数传递给Thread类的有参构造方法,代码如下:

class Thread2 implements Runnable{    @Override    public void run() {        while (true) {            try {                Thread.sleep(1000);// 线程睡眠1s            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            System.out.println(Thread.currentThread().getName;// 打印当前线程名称            }}}public class Test {    public static void main(String[] args) {        Thread thread = new Thread(new Thread2;        thread.start();//启动线程    }}

三种方法的区别:假诺多少个类承接Thread,则不符合财富共享。不过一旦完成了Runable接口的话,则很轻松的得以实现财富分享。

贯彻Runnable接口比持续Thread类所享有的优势:

1):相符多个同样的程序代码的线程去管理同二个财富

2):能够幸免java中的单承继的界定

3):扩展程序的健壮性,代码能够被多个线程分享,代码和多少独立

留心:main方法其实也是一个线程。在java中负有的线程都以同一时间运转的,至于何以时候,哪个先执行,完全看什么人先拿走CPU的能源。

在java中,每便程序运维最少运行2个线程。一个是main线程,八个是垃圾堆收罗线程。因为每当使用java命令实践一个类的时候,实际上都会运营三个jvm,每二个jvm实际上正是在操作系统中运营了叁个进度。

本文由六合联盟网发布于系统操作,转载请注明出处:线程之线程的开辟方法,完结多线程的二种守旧

关键词: