你总会迎来那束光 或早 或晚
--------李亦欣
创建多线程的两种方式
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知识!