List item
- 进程由操作系统控制,一个主程序即为一个进程;线程与进程相比,共享内存空间,数据交互性强,由虚拟机和线程类(Thread)共同控制,线程类可以创建很多对象,每一个对象即为一个线程,管理线程就是使用对象管理。
- yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!
代码实现:
package edu.xalead;
class T2 extends Thread{
T2(){
/*super*/this.setName("让步线程"); //给线程起名字
}
@Override
public void run() {
while(true){
Thread.yield(); //当前线程让步 只让一次时间片
System.out.println(this.getName());
}
}
}
class T3 implements Runnable{
@Override
public void run() {
while(true){
//Thread.yield(); //当前线程让步 只让一次时间片
System.out.println(Thread.currentThread().getName()); //得到当前线程的引用 名字
}
}
}
public class 让步线程 { // 可运行状态向就绪状态
public static void main(String[] args) {
T2 t = new T2();
t.start();
T3 t1 = new T3();
Thread t2 = new Thread(t1); //线程和任务类之间存在一个协议 传进去接口
t2.start();**
运行结果:
Runnable没有getname()方法,Thread.currentThread()可得到当前线程的引用,即可返回当前代码正在被那个线程调用的信息,若用户未命名,则系统会自动生成一个命名。