1700449585
1700449586
}
1700449587
1700449588
@Override
1700449589
1700449590
public void run(){
1700449591
1700449592
//MultiThread do something.
1700449593
1700449594
}
1700449595
1700449596
}
1700449597
1700449598
注意看start方法,调用了父类的start方法,没有主动调用run方法,这是由JVM自行调用的,不用我们显式实现,而且是一定不能实现。此方式虽然解决了“覆写start方法”的问题,但是基本上无用武之地,到目前为止还没有发现一定要覆写start方法的多线程应用,所有要求覆写start的场景,都可以用其他的方式来实现,例如类变量、事件机制、监听等方式。
1700449599
1700449600
注意 继承自Thread类的多线程类不必覆写start方法。
1700449601
1700449602
1700449603
1700449604
1700449606
编写高质量代码:改善Java程序的151个建议 建议119:启动线程前stop方法是不可靠的
1700449607
1700449608
有这样一个案例,我们需要一个高效率的垃圾邮件制造机,也就是需要有尽可能多的线程来尽可能多地制造垃圾邮件,垃圾邮件需要的信息保存在数据库中,如收件地址、混淆后的标题、反垃圾处理后的内容等,垃圾制造机的作用就是从数据库中读取这些信息,判断是否符合条件(如收件地址必须包含@符号、标题不能为空等),然后转换成一份真实的邮件发送出去。
1700449609
1700449610
整个应用逻辑很简单,这必然是一个多线程的应用,垃圾邮件制造机需要继承Thread类,代码如下:
1700449611
1700449612
//垃圾邮件制造机
1700449613
1700449614
class SpamMachine extends Thread{
1700449615
1700449616
@Override
1700449617
1700449618
public void run(){
1700449619
1700449620
//制造垃圾邮件
1700449621
1700449622
System.out.println(“制造大量垃圾邮件……”);
1700449623
1700449624
}
1700449625
1700449626
}
1700449627
1700449628
在客户端代码中需要发挥计算机的最大潜能来制造邮件,也就是说开尽量多的线程,这里我们使用一个while循环来处理,代码如下:
1700449629
1700449630
public static void main(String[]args){
1700449631
1700449632
//不分昼夜地制造垃圾邮件
1700449633
1700449634
while(true){
[
上一页 ]
[ :1.700449585e+09 ]
[
下一页 ]