• Thread 和 Runnable创建新线程的区别,Runnable可以共享线程类的实例属性


    Thread实现多线程:

    public class Thread2 extends Thread{

    public  int i;

    public void run(){

    for(; i < 100 ;i++) {

    System.out.println(getName() + " " + i);

    }

    }

    public static void main(String[] args){

    for (int j = 0; j < 100; j++) {

    System.out.println(Thread.currentThread().getName() + " " + j);

    if (j == 20) {

    new Thread2().start();

    new Thread2().start();

    }

    }

    }

    }

    运行部分结果:

     

    Thread-1 97

    Thread-1 98

    Thread-1 99

    main 21

    main 22

    main 23

    main 24

    main 25

    main 26

    main 27

    main 28

    Thread-2 0

    Thread-2 1

    Thread-2 2

    Thread-2 3

    Thread-2 4

    可以看出各个线程的属性不共享


    //Runnable 实现多线程

     

    public class Thread1 implements  Runnable{

    public  int i;

    public void run(){

    for(; i < 100 ;i++) {

    System.out.println(Thread.currentThread().getName() + " " + i);

    }

    }

    public static void main(String[] args){

    for (int j = 0; j < 100; j++) {

    System.out.println(Thread.currentThread().getName() + " " + j);

    if (j == 20) {

    //new Thread1().start();

    Thread1 ss = new Thread1();

    new Thread(ss,"新线程1").start();

    new Thread(ss,"新线程2").start();

     

    }

    }

    }

    }

    运行部分结果:

    新线程1 45

    新线程1 46

    新线程1 47

    新线程1 48

    新线程2 49

    新线程2 50

    新线程2 51

    新线程2 52

    新线程2 53

    新线程2 54

    新线程2 55

    新线程2 56

    新线程2 57

    可以看出属性是共享的
  • 相关阅读:
    停下来,等等灵魂(二)
    停下来,等等灵魂(一)
    swoole流程图
    使用 Spring Cloud Sleuth、Elastic Stack 和 Zipkin 做微服务监控
    Portainer实战
    Docker 容器日志分析
    docker容器日志查看
    java(集合框架)(转)
    js中const,var,let区别与用法(转)
    【MySQL】Mac通过brew安装的MySQL重启方法
  • 原文地址:https://www.cnblogs.com/stsinghua/p/6418700.html
Copyright © 2020-2023  润新知