《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方法中的内容
浙公网安备 33010602011771号