Thread 和 Runnable创建新线程的区别,Runnable可以共享线程类的实例属性
2015-12-08 22:42
519 查看
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
4000
() +
" " + 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
可以看出属性是共享的
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
4000
() +
" " + 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
可以看出属性是共享的
相关文章推荐
- UGUI_不规则图片点击事件处理
- 正则表达式计算代码数
- Exchange Server 2013 运维系列——增量备份及数据还原
- postgres关键字、常量和数据类型
- HDU5074 dp xingxing在努力
- jquery.tmpl.js
- IntelliJ IDEA 设置 编辑器字体大小背景色及快捷键
- OC - 限时代码
- Linux 文件系统概况
- ORACLE角色(通过DBA创建)
- Struts2运行流程分析
- Struts2运行流程分析
- ubuntu下访问其他盘出现挂在错误解决办法
- 什么是AngularJS
- ODL编译问题记录
- Exchange Server2013 系列:常规配置
- 黑马程序员---java入门学习需要知道的准备知识
- 解决Web部署 svg/woff/woff2字体 404错误
- Eclipse常用快捷键
- 几种经典的网络服务器架构模型的分析与比较