62,635
社区成员




/**
* @author :jiaolian
* @date :Created in 2021-01-12 10:35
* @description:对象和线程关系
* @modified By:
* 公众号:叫练
*/
public class SleepTest {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) throws InterruptedException {
SleepTest sleepTest = new SleepTest();
sleepTest.setName("我是叫练");
//主线程做出一个睡眠的动作;
Thread.sleep(1000);
//主线程访问SleepTest实例
System.out.println(Thread.currentThread().getName()+": "+sleepTest.getName());
}
}
你可能没有理解线程和对象的关系,this对象和sleep的关系?线程是去操作对象的,线程在栈里面保存在对象引用,通过引用找到对象并操作,你说的静态函数sleep只是线程要做的一个动作,和调用普通方法没有任何区别,区别就是sleep是C++实现的,普通方法就是你自己用Java写的。如上案例,SleepTest sleepTest = new SleepTest();创建SleepTest 对象引用sleepTest,线程可以用 sleepTest操作里面的属性name,Thread中的sleep(1000)是是静态函数,在sleep里面可以获取当前操作线程,this表示当前对象,如果你想在sleep方法里面处理this对象,你可以把this当参数传入,但明显在sleep方法中再传入一个this就没有必要了,线程调用sleep后,main线程状态会从running变成time_waiting状态。如果对您有帮助,麻烦给个关注!