java 多线程实例,自己写的第一个例子,理解什么是多线程,怎么写多线程

package test;




public class ThreadTest extends Thread {
public ThreadTest(String str){//用构造函数控制线程的名字,如果不写,默认是thread-整数
super(str);
}


@Override
public void run() {
synchronized(this){
for(int i=0;i<10;i++){//控制run的内部这些东西执行的次数,不加这句,run只执行一次。
System.out.println(i+getName());
try {
sleep((long)(Math.random()*1000));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//for循环结束
System.out.println("for循环结束"+getName());
}
super.run();
}



/*
* 此方法可添加也可以不填加,start都能够调用。
* @Override
public synchronized void start() {
// TODO Auto-generated method stub
super.start();
}*/




public static void main(String args[]){
new ThreadTest("su").start();
new ThreadTest("zhu").start();


}

}


1其中sleep函数,是让程序在这一行卡一会儿,然后再执行后面的代码。起到休息的作用。是Tread类特有的,不继承Tread直接是没办法使用sleep的,编译器会报错。

2TreadTest(su)和TreadTest(zhu)两个是并行的,即基本上是同时执行的,但是执行速度是随机的(受到当时cpu、内存等的环境影响),所以system.out.println打印出来的东西是随机的,不是固定的。即每一次执行该class,输出的结果是随机的。如下对比

java 多线程实例,自己写的第一个例子,理解什么是多线程,怎么写多线程_第1张图片java 多线程实例,自己写的第一个例子,理解什么是多线程,怎么写多线程_第2张图片

你可能感兴趣的:(java 多线程实例,自己写的第一个例子,理解什么是多线程,怎么写多线程)