23.多线程 实现的两种方式

 2023-09-05 阅读 269 评论 0

摘要:2019独角兽企业重金招聘Python工程师标准>>> 方式一:继承 Thread 接口 1. 效果 2.代码 继承Thread类的类代码 package cn.ma.thread01; /** * 实现多线程的类 * 方法一:继承 Thread类 */ public class myThread extends Thread { @Overri

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    

方式一:继承 Thread 接口   

1. 效果

235726_FeiO_3015807.png

2.代码

235336_bAy9_3015807.png

继承Thread类的类代码

package cn.ma.thread01;
/**
 *   实现多线程的类 
 *           方法一:继承 Thread类
 */

public class myThread extends Thread {
        @Override
        public void run() {
            
            for (int i = 0; i < 200; i++) {
    System.out.println(getName()+"--"+i);
            }
        }
}
测试类代码

package cn.ma.thread01;
/**
 *     多线程:
 *         进程:就是程序
 *         定义: 是在进程下面同时可以执行多条路线
 *     如何实现多线程:
 *         方法1: 继承Thread 类
 *         方法2:实现   implements Runnable 接口
 */
public class ThreadTest {
    public static void main(String[] args) {
         myThread mt = new myThread();//线程1 对象
         myThread mt2 = new myThread();//线程2 对象
         myThread mt3 = new myThread();//线程 3 对象
         
         // 分别调用线程1 2 3 的start方法 开启线程
         mt.start();
         mt2.start();
         mt3.start();
         mt.setName("线程一:");
         mt2.setName("线程二:");
         mt3.setName("线程三:");
         //获取当前线程
 System.err.println(Thread.currentThread().getName());
 //获取当先线程级别     默认是 5
 System.out.println(mt.getPriority());
 System.out.println(mt2.getPriority());
 System.out.println(mt3.getPriority());
 // 设置 线程级别   范围在    0---10  超过报错
 //mt.setPriority(11);//会报错的   java.lang.IllegalArgumentException
 mt2.setPriority(1);
 mt3.setPriority(6);
 System.out.println("线程一级别:"+mt.getPriority());
 System.out.println("线程二级别:"+mt2.getPriority());
 System.out.println("线程三级别:"+mt3.getPriority());
    }
}
 

方式二:(推荐)实现runnable接口

1.效果

000250_gpHx_3015807.png

2. 代码

实现Runnable接口的类代码

package cn.ma.thread02;
/**
 *实现多线程  方式二 :实现 runnable接口
 *        
 *         
 *
 */
public class MyThread  implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 200; i++) {
            if(Thread.currentThread().getName().equals("线程一")){
                System.err.println(Thread.currentThread().getName()+"-----"+i);
            }else{
                System.out.println(Thread.currentThread().getName()+"-----"+i);
            }
            
        }
        
        
    }

}
 

测试部部分代码

package cn.ma.thread02;
/**
 *  测试 多线程实现方式二:
 *                实现runnable接口 
 *
 */
public class Test {
        public static void main(String[] args) {
            //这里只 造一个对象   好处实现资源共享
             MyThread my = new MyThread();
             
             
             Thread t1 = new Thread(my);//将类对象放到 线程中
             Thread t2 = new Thread(my);
             
             //给线程起名字
             t1.setName("线程一");
             t2.setName("线程二");
             //启动线程
             t1.start();
             t2.start();
             
        }
}
 

 

转载于:https://my.oschina.net/springMVCAndspring/blog/1491812

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/535.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息