栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础:继承Thread类的方式创建多线程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础:继承Thread类的方式创建多线程

多线程

java语言的JVM允许程序运行多个线程。它可以通过java.lang.Thread类来实现

  • 新建一个类继承于Thread类–重写Thread类中的run()方法,在该方法中写需要多线程执行的方法体,在main()方法中调用Thread类中的start()方法

代码示例

package thread;


public class ThreadTest {
    public static void main(String[] args) {
        MyThread m1 = new MyThread();//new一个Thread的子类的对象
        
        //调用Thread类中的start()方法;启动当前线程,调用当前线程的run()
        //不用等待,新建了一个线程,并行运行,输出Thread-i,即在Thread线程中执行
        m1.start();
        //一个对象只能调用一次start()
        
        //不能通过直接调用run()的方式启动线程,这种方式仍然是在主线程中运行,输出main-i
        m1.run();
        
        //以下操作任然在主线程中
        for(int i=0;i<=100;i++){
            if(i%2==0){
                //输出main-i
                System.out.println(Thread.currentThread().getName()+"-"+i);
            }
        }
    }
}
//创建一个继承于Thread类的子类
class MyThread extends Thread{
   //重写Thread类的run()方法

    @Override
    public void run() {
        //遍历0-100的偶数
        for(int i=0;i<=100;i++){
            if(i%2==0){
                System.out.println(Thread.currentThread().getName()+"-"+i);
            }
        }
    }
}

Thread的常用方法
package thread;


public class ThreadTest02 {
    public ThreadTest02() {
    }

    public static void main(String[] args) {

        Mythread m1 = new Mythread();

        m1.setName("线程-1");
        m1.start();

        //改主线程的名字
        Thread.currentThread().setName("主线程-2");
        for(int i=0;i<=100;i++){
            if(i%2==0){
                System.out.println(Thread.currentThread().getName()+""+i);
            }
            
            //强行换路
            if(i==50){
                try {
                    m1.join();//该条件触发时,掐断原本的线程,切换到其他线程,
                             // 直到那个线程执行完成后再调用本身这个线程
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        }
    }
}
class Mythread extends Thread{
    @Override
    public void run() {
        for(int i=0;i<=100;i++){
            if(i%2 != 0){

                //sleep阻塞线程,单位毫秒
                try {//快捷键:ctrl+alt+T
                    sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                }

                System.out.println(Thread.currentThread().getName()+""+i);
            }
            if(i%10==0){
                yield();//当i可以除以10 线程主动停止一下,但仍然会再次调用线程
            }
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999661.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号