《java多线程编程核心技术》二 使用继承Thread方式例子

实例一:

最简单的线程调用例子

package com.blog.damingge.example.thread;

public class MyThread extends Thread{
@Override
public void run() {
System.out.println("first myThread example");
}

}

package com.blog.damingge.example.thread;

public class Test {

public static void main(String[] args) {

MyThread myThread = new MyThread();
myThread.start();
System.out.println("主线程运行结束");

}

}

运行结果为:

主线程运行结束
first myThread example

从结果可以看出,线程是异步的,没有阻塞主线程运行

 

实例二:

线程执行的随机性:

package com.blog.damingge.example.thread;

public class Test {

public static void main(String[] args) {
for(int i=0;i<10;i++){
MyThread myThread = new MyThread();
myThread.setName(" " + i +"号线程" );
myThread.start();
}
System.out.println("主线程运行结束");

}

}

 

package com.blog.damingge.example.thread;


public class MyThread extends Thread{

@Override
public void run() {
System.out.println(Thread.currentThread().getName() +"正在执行");
}

}

运行结果如下(多次运行结果不同):

1号线程正在执行
0号线程正在执行
主线程运行结束
2号线程正在执行
4号线程正在执行
3号线程正在执行
6号线程正在执行
9号线程正在执行
5号线程正在执行
7号线程正在执行
8号线程正在执行

结论:

 start的顺序,并不是线程执行顺序,start方法仅仅是通知“线程规划器”,线程已经就绪,等待系统执行run()方法。

 

实例三:

将实现二中 myThread.start()改为myThread.run();

则执行结果为:

main正在执行
main正在执行
main正在执行
main正在执行
main正在执行
main正在执行
main正在执行
main正在执行
main正在执行
main正在执行
主线程运行结束

 

结论:

1)程序顺序执行,即变为了同步方法

2)Thread.currentThread().getName()得到的是主线程

3)直接调用run方法,则不是通知“线程规划器”来执行线程,而是由main线程直接调用run方法中的内容

posted on 2018-02-09 23:09  java我不会  阅读(111)  评论(0)    收藏  举报

导航