0
点赞
收藏
分享

微信扫一扫

Java关于如何创建多线程的两种方法及其他知识

搬砖的小木匠 2022-04-15 阅读 45

你总会迎来那束光  或早  或晚

--------李亦欣

创建多线程的两种方式
1:写一个类继承于Thread类
      重写Thread类中的run方法(run方法中写的是  你这个线程想干啥  那就写啥代码)
      造这个类的对象 比如说是 t1
      通过t1调start方法


2:造一个类实现runnable接口
      在这个类中实现(其实就是重写)run()方法   一样的  这个线程要干啥  里面就写啥代码


3:造这个类的对象  比如说这个对象是p1


4:把这个对象作为参数传到Thread类的构造器中 并造一个Thread类的对象    eg:Thread t = new Thread(p1);


5:用这个Thread类的对象去调用start()方法     t.start();


关于Thread类中的一些方法
    1. start()方法:开始一个线程  调用Thread类中的run方法


    2.run()方法:需要重写   在新的类中重写run方法,内容是  这个线程要干嘛  就写啥代码


    3.Thread.currentThread()方法:返回当前正在执行的线程


    4.setname()方法:给一个线程命名   如果给分线程命名  因为你创建了新的类继承于Thread类   即也就是创建了当前类的对象   在main方法中直接对象.setname(“分线程”)就可以了   如果给主线程命名   那么只能是Thread.currentThread().setname(“主线程”)


    5.getname()方法:同理  得到当前线程的名称     Thread.currentThread().getname()


    6.yield()方法:释放当前CPU的执行权,比如,现在是分线程正在执行,结果执行到了yield方法,那么CPU的执行权被释放,下一次的执行权就不一定又是分线程了,就是让他们自己抢去,谁能抢到,就是谁的。当然可能还是分线程抢到,谁让人家有这个本事呢


    7.join()方法:如果说当前主线程正在执行,结果执行到了join()方法,那么谁调的join方法,就让人家调的那个线程先执行完,你自己主线程再执行


    8.stop()方法:现在已经舍弃  强制停止结束当前的线程


    9.isalive()方法:看当前的线程是否还活着  还存在



    10.关于线程优先级设置的问题
       setpriority()方法    priority最大是10  最小是1  默认值为5          要是想改那么就对象.setpriority(具体的值  比如3  4  7  8)要是主线程想改呢?  就Thread.currentThread.setpriority(具体的值)最大的priority是MAX_PRIORITY=10   最小的priority是MIN_PRIORITY=1    默认的为NORM_PRIORITY=5   注意!!这几个值都是全局常量   要调用就是Thread.MAX_PRIORITY等等

最后就是一个getpriority()方法   调用跟之前一样   分线程就是对象.方法    主线程就是Thread.currentThread.getpriority()

值得注意的是  并不是一个线程的优先级越高就一定比优先级低的早抢占到CPU   早执行  
不是这样的!!优先级设置的越高  只是说这个线程被先执行的概率大而已!!是概率!!并不意味着他肯定就比优先级低的先执行!!

喜欢的就关注吧,持续更新Java知识!


      

举报

相关推荐

0 条评论