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

可以看出属性是共享的

时间: 2024-12-28 20:37:56

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

进程与线程的区别?--多线程与线程池

每个进程都是一个程序,进程之间相互独立.除分布式外,进程数据之间,内存是不共享的. 线程存在于进程之中,一个进程包括一个或多个线程,每个线程都是一条路径,线程之间共享数据. 多线程 优点:合理利用CPU资源,单线程独占CPU资源,浪费CPU资源.并且可以提高程序的运行效率 缺点:1.如果有大量的线程运行,会消耗大部分内存,会影响性能(可能会死机),CPU需要他们之间的切换. 2.线程运行可能会出现死锁.线程安全问题(修改操作时你要考虑使用synchronized.lock(接口).volatil

python cookbook第三版学习笔记十二:类和对象(三)创建新的类或实例属性

先介绍几个类中的应用__getattr__,__setattr__,__get__,__set__,__getattribute__,. __getattr__:当在类中找不到attribute的时候,会调用__getattr__,并执行其中的自定义代码.所有在类中定义的属性都包含在__dict__中,也就是说如果在__dict__中找不到对应的属性名,则__getattr__被触发. class get_try(object):     def __init__(self,value):   

(转)内核线程和用户线程的区别

内核级线程切换由内核控制,当线程进行切换的时候,由用户态转化为内核态.切换完毕要从内核态返回用户态:可以很好的利用smp,即利用多核cpu.windows线程就是这样的. 用户级线程内核的切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu,目前Linux pthread大体是这么做的. 线程的实现可以分为两类:用户级线程(User-Level Thread)和内核线线程(Kernel-Level Thread),后者又称为内核支持的线程或轻量级进程

用户级线程和内核级线程的区别

转载于http://col1.blog.163.com/blog/static/1909775192012719114033352/ 1 .内核级线程:切换由内核控制,当线程进行切换的时候,由用户态转化为内核态.切换完毕要从内核态返回用户态:可以很好的利用smp,即利用多核cpu.windows线程就是这样的. 2. 用户级线程内核的切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu,目前Linux pthread大体是这么做的. 线程的实现可以分

进程和线程的区别【转】

本文转载自:http://blog.csdn.net/mxsgoden/article/details/8821936 进程和线程的区别? 进程和线程的主要差别在于它们是不同的操作系统资源管理方式.进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径.线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些.但对于一些要求同时进

守护进程与守护线程的区别

守护进程与守护线程的区别 无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 #1.对主进程来说,运行完毕指的是主进程代码运行完毕 #2.对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕 详细解释: #1 主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束, #2 主线程在其他非守护线程运行完

Java多线程和并发(一),进程与线程的区别

目录 1.进程和线程的由来 2.进程和线程的定义 3.进程和线程的区别 一.进程和线程的区别 1.进程和线程的由来 2.进程和线程的定义 进程是资源分配的最小单位,线程是CPU调度的最小单位 3.进程和线程的区别 原文地址:https://www.cnblogs.com/xzmxddx/p/10362796.html

001-多线程基础-进程线程、线程状态、优先级、用户线程和守护线程

一.进程与线程 1.DOS系统[单进程系统] 最早的时候DOS有一个特点:只要电脑有病毒,那么电脑就死机了. 原因:传统的DOS系统属于单进程系统,即:在同一时间段内只允许有一个程序运行. 2.Windows系统[多进程多线程] 电脑中毒也可以运行,但是会变慢 原因:因为在一个cpu.一块资源的情况下,程序利用一些轮转算法,可以让一个资源在一个时间段可以同时处理多个程序(进程),但是在一个时间点上只允许一个进程去执行. windows:任务管理器 linux:ps 在每一个进程上可以划分出若干个

java线程学习-Thread.currentTread().getName()和this.getName()的区别

很久没有写java程序了,由于为了改变目前的状况,打算花两天时间学习一下java的线程开发和高并发. 线程开发使用thread类,或者runnable接口,而且thread类也是实现了runnable接口的. 先来个小甜点作为开始,如下为创建多个线程,并且同时处理. package firstThreadStudy; public class MyThread extends Thread { public MyThread(){ System.out.println("MyThread cur