实现Runnable接口
作为一个定义Thread的新子类的方案我们可以在一个类中实现Runnable接口你会
//Set thereads as Daemon
firstrsetDaemon(true);
secondsetDaemon(true);
thirdsetDaemon(true);
Systemoutprintln(Press Enter when you have had enough\n);
firststart(); // Start the first thread
secondstart(); // Start the second thread
thirdstart(); // Start the third thread
try
{
Systeminread(); // Wait until Enter key pressed
Systemoutprintln(Enter pressed\n);
}
catch (IOException e) // Handle IO exception
{
Systemoutprintln(e); // Output the exception
}
Systemoutprintln(Ending main());
return;
}
}
如何工作
在这个类中有与前例相同的数据成员构造函数几乎与前例相同在这个类的构造函数中我们不能调用setDamon()因为我们的类不是由Thread类派生的取而代之的是我们在创建代表线程的对象后在main()方法中需要做这些Run()方法的实现也非常相似我们的类没有sleep()成员但因为它是Thread类的pubtlC Static成员通过使用类名在我们的run()方法只能够可以调用它
在main()方法我们仍然为每个执行线程创建一个Thread对象但这次我们使用的构造函数接受一个Runnable类的对象我们传递JumhleNames类的一个对象给它因为我们的类实现Runnable所以是可行的
线程名
线程有一个名字在例子中我们使用的Thread构造函数将是一个带一个序号的 Thread* 串组成的默认名如果你想为一个线程选择你自己的名字构造函数接收一个String对象指定你想分配给该线程的名字例如我们用下句创建一个Thread对象first:
Thread first=new Thread(new JumbleNames(HopalongcassidyL)
firstThread);
这句为线程起名为firstThread注意这个名字只用于显示有关线程信息它与Thread对象的标识符无关并且除了通常意义之外不会阻止若干线程起相同的名字
通过对Thread对象调用getName()方法你可以获取分配给线程的名字线程的名字作为一个string对象返回通过调用Thread类中定义的setName()方法向它传递一个tring对象你也可以改变一个线程的名字
我们一旦在例子中创建三个Thread对象我们可以对每个线程调用setDaemon()方法main()中剩余部分俄与前例中原来版本一样并且当你运行程序的这个版本时应能得到相同的输出
Java入门经典在线教程完整版
[] [] [] [] [] [] [] []