/**
- 多线程的创建,方式一:继承于thread类
-
1.创建一个继承于thread类的子类
-
2.重写thread类的run()-->将此线程执行的操作声明在run()中
-
3.创建thread类的子类的对象
-
4.通过此对象调用start()
-
**例子:遍历100以内的所有偶数**
*/
// 1.创建一个继承于thread类的子类
class MyThread extends Thread{
// 2.重写thread类的run()
@Override
public void run() {
for(int i=0;i<100;i++){
if(i%2==0){
System.out.println(i);
}
}
}
}
public class ThreadTest {
public static void main(String[] args) {
// 3.创建thread类的子类的对象
MyThread t1=new MyThread();
// 4.通过此对象调用start():①启动当前线程 ②调用当前线程的run()
t1.start();
//问题1:我们不能通过直接调用run()的方式启动线程
//t1.run();
// 问题二:再启动一个线程,遍历100以内的偶数。不可以让已经start()的线程去执行。
//会报IllegalThreadStateException异常。需要重新创建一个线程的对象
//t1.start();
MyThread t2=new MyThread();
t2.start();
//如下方法仍然是在main线程中执行的
for(int i=0;i<100;i++){
if(i%2!=0){
System.out.println(i+"**************");
}
}
}
}
例子:
/**
*** 创建两给分线程:其中一个线程遍历100以内的偶数,另一个线程连理100以内的奇数**
-
@author shkstart
-
@creat 2020 − {2020}- 2020−{10}- 22 {22} 22{14:54}
*/
public class ThreadDemo {
public static void main(String[] args) {
MyThread1 m1=new MyThread1();
MyThread2 m2=new MyThread2();m1.start(); m2.start();
}
}
class MyThread1 extends Thread{
@Override
public void run() {
for (int i = 0; i <100 ; i++) {
if(i%2==0){
System.out.println(Thread.currentThread().getName()+":"+i);}
}
}
}
class MyThread2 extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if(i%2!=0){
System.out.println(Thread.currentThread().getName()+":"+i);
}}
}
}