如何使用在Java中实现Runnable的类

如何使用在Java中实现Runnable的类,java,android,multithreading,Java,Android,Multithreading,我对线程并不陌生,我基本上使用线程来运行长进程,我所做的只是创建Runnable类的一个实例,并将我希望它运行的所有代码放在run方法中,但昨天我的讲师让我创建一个实现Runnable类的简单程序,该类将演示如何使用Start,等待、睡眠、连接和产生方法调用,就像我之前说过的,每次我想运行线程时,我所做的就是创建Runnable类的实例,添加一个处理程序,甚至一个循环器,但实现该类是我以前从未做过的事情,所以我有点不知所措,我选择创建一个简单的Contactbook程序,该程序用于保存和删除文件

我对线程并不陌生,我基本上使用线程来运行长进程,我所做的只是创建Runnable类的一个实例,并将我希望它运行的所有代码放在run方法中,但昨天我的讲师让我创建一个实现Runnable类的简单程序,该类将演示如何使用Start,等待、睡眠、连接和产生方法调用,就像我之前说过的,每次我想运行线程时,我所做的就是创建Runnable类的实例,添加一个处理程序,甚至一个循环器,但实现该类是我以前从未做过的事情,所以我有点不知所措,我选择创建一个简单的Contactbook程序,该程序用于保存和删除文件中的联系人,其中一个类应实现Runnable类,因此我选择从文件中保存和加载联系人的类,因为此部分可能需要更多时间,因此需要在单独的线程上运行。下面是我的类

每个联系人应具有的数据的人员类别a蓝图

公共类Person实现Runnable{

private String fname;
private String lname;
private String number;
private String callTime;


public Person()
{
    this("", "","","");
}

public Person(String fname, String lname, String number, String callTime)
{
    this.fname = fname;
    this.lname = lname;
    this.number = number;
    this.callTime = callTime;
}

public String getFname() {
    return fname;
}

public void setFname(String fname) {
    this.fname = fname;
}

public String getLname() {
    return lname;
}

public void setLname(String lname) {
    this.lname = lname;
}

public String getNumber() {
    return number;
}

public void setNumber(String number) {
    this.number = number;
}

public String getCallTime() {
    return callTime;
}

public void setCallTime(String callTime) {
    this.callTime = callTime;
}

public void printContacts()
{
    TimeAgo timeSaved = new TimeAgo();
    System.out.println("-------------------------------------");
    System.out.println(" 1. First Name: "+this.fname);
    System.out.println("    Last Name: "+this.lname);
    System.out.println("    Cell Number: "+this.number);
    System.out.println("    Saved Date: "+String.valueOf(timeSaved.getTimeAgo(Long.parseLong(this.callTime))));
    System.out.println("-------------------------------------");

}
}


Contactmanager类,该类负责从文件中写入、读取和删除联系人,readAllContacts和writeToFile方法是我希望在另一个线程上运行的方法,基本上是因为它们可能需要一些时间来读取和写入。因此,我的问题是如何告诉ContactManager在一个单独的线程上运行这两个方法,而不需要创建Runnable类的实例并围绕run方法中的方法体?

如果不创建新线程,就无法在另一个线程中运行方法。如果你实现Runnable,你需要重写run方法,然后你可以把这个类放在一个新的线程中并启动它。我建议你从更简单的开始,因为你需要演示start、Wait、Sleep、Join和屈服,你需要两个线程,一起工作,在google上搜索[java Thread example]谢谢@PetterFriberg@Tobi谢谢