把线程内容的部分代码摘录如下
packageThread;
//本例题展示了单线程的情况,输出结果只输出son.run();的执行情况
//sonmainson
//sonmainson
//sonmainson
//sonmainson
//

publicclassTestA...{
publicstaticvoidmain(String[]args)
...{
MyThreadson=newMyThread();
son.run();
while(true)
...{
System.out.println("main"+Thread.currentThread().getName()+"main");
}
}
}
classMyThread
...{
voidrun()
...{
while(true)
...{
System.out.println("son"+Thread.currentThread().getName()+"son");
}
}
}
packageThread;
//本例实现了多线程,通过继承Thread实现
//mainmainmain
//mainmainmain
//mainmainmain
//mainmainmain
//mainmainmain
//mainmainmain
//mainmainmain
//sonThread-0son
//sonThread-0son
//sonThread-0son
//看到主线程和子线程交替执行

publicclassTestB...{
publicstaticvoidmain(String[]args)
...{
//MyThread2son=newMyThread2();
//son.start();
newMyThread2().start();//此处应用了匿名对象,和上述注释一样
while(true)
...{
System.out.println("main"+Thread.currentThread().getName()+"main");
}
}
}
classMyThread2extendsThread
...{
publicvoidrun()
...{
while(true)
...{
System.out.println("son"+Thread.currentThread().getName()+"son");
}
}
}
packageThread;


publicclassTestC...{
publicstaticvoidmain(String[]args)
...{
//MyThread2son=newMyThread2();
//son.start();
newMyThread3().start();//此处应用了匿名对象,和上述注释一样
while(true)
...{
System.out.println("main"+Thread.currentThread().getName()+"main");
}
}
}
classMyThread3extendsThread
...{
publicvoidrun()
...{
while(true)
...{
System.out.println("son"+Thread.currentThread().getName()+"son");
}
}
}
packageThread;
//本例展示了Join的应用
//tt.join()后,整个程序又变成了一个线程,因为把它加入到了主线程,所以当完成100以后,持续输出son
//tt.join(1000)后,程序持续运行son10秒,然后交替输出main和son
publicclassTestJoin...{
publicstaticvoidmain(String[]args)
...{
Threadtt=newMyThreadJoin();
tt.start();
intcount=0;
while(true)
...{if(count++==1000)
//try{tt.join();}catch(Exceptione){}
try...{tt.join(10000);}catch(Exceptione)...{}//此处显示了加入10秒后,将交替输出main和son
System.out.println("main"+Thread.currentThread().getName()+"main");
}
}
}
classMyThreadJoinextendsThread
...{
publicvoidrun()
...{
while(true)
...{
System.out.println("son");
}
}
}
packageThread;
//该例展示了后台线程的运行情况,当主程序结束后,后台线程会及时终止
//如果不设置daemon,则线程会一直运行,虽然主程序main()已经结束
publicclassTestZ...{
publicstaticvoidmain(String[]args)
...{
Threaddog=newth();
dog.setDaemon(true);//dog设置为了后台线程
dog.start();
}
}
classthextendsThread
...{
publicvoidrun()
...{
while(true)
...{
System.out.println("ald");
}
}
}
packageThread;

publicclassErrorDemo...{
publicstaticvoidmain(String[]args)
...{
RRrrr=newRRr();
newThread(rr).start();
newThread(rr).start();
newThread(rr).start();
newThread(rr).start();
}
}





classRRrimplementsRunnable
...{
intcount=100;
publicvoidrun()
...{
while(true)
...{
if(count>0)
...{
try...{Thread.sleep(10);}catch(Exceptione)...{}
System.out.println(Thread.currentThread().getName()+"sisaling"+count--);
}
}
}
}
packageThread;

publicclassRunnableDemo...{
publicstaticvoidmain(String[]args)
...{
newThread(newR()).start();//注意此处的应用方式Thread的构造函数以R为参数,故调用R.run()
newThread(newR()).start();
newThread(newR()).start();
newThread(newR()).start();
while(true)
...{
System.out.println("main");
}
}
}
classRimplementsRunnable
...{
inttickets=100;
publicvoidrun()
...{
while(true)
...{
System.out.println(Thread.currentThread().getName()+(tickets--));
Java线程详解

被折叠的 条评论
为什么被折叠?



