当前位置: 技术问答>java相关
多线程的例子。但是不知道为什么看不懂。唉,笨:(各们帮帮忙了给我解释解释
来源: 互联网 发布时间:2015-06-05
本文导语: 前过前面的语句this 表明对象中你想要新的线程调用run()方法。然后,start()被 调用。以run()方法为开始启动了线程的执行。子线程的for开始执行。调用start() 之后。NewThread的构造函数返回到main()当主线程被恢复。它到...
前过前面的语句this 表明对象中你想要新的线程调用run()方法。然后,start()被
调用。以run()方法为开始启动了线程的执行。子线程的for开始执行。调用start()
之后。NewThread的构造函数返回到main()当主线程被恢复。它到达for循环。
两个线程继续运行。共享cpu直到它们的循环结束。
这是文章中的解释。
可是我怎么都没看来有两个线程啊。
越看越晕
class NewThread implements Runnable
{
Thread t;
NewThread(){
t=new Thread(this,"demo thread");
System.out.print("Child thread:"+t);
t.start();
}
public void run()
{
try{
for(int i=5;i>0;i--){
System.out.println("Child Thread:"+i);
Thread.sleep(500);
}
}
catch(InterruptedException e){
System.out.println("Child interrupted.");
}
System.out.println("Exiting child thread");
}
}
class ThreadDemo{
public static void main(String args[]){
new NewThread();
try{
for(int i=5;i>0;i--){
System.out.println("main thread:"+i);
Thread.sleep(1000);
}
}
catch(InterruptedException e){
System.out.println("main thread interrupted.");
}
System.out.println("Main thread exiting");
}
}
调用。以run()方法为开始启动了线程的执行。子线程的for开始执行。调用start()
之后。NewThread的构造函数返回到main()当主线程被恢复。它到达for循环。
两个线程继续运行。共享cpu直到它们的循环结束。
这是文章中的解释。
可是我怎么都没看来有两个线程啊。
越看越晕
class NewThread implements Runnable
{
Thread t;
NewThread(){
t=new Thread(this,"demo thread");
System.out.print("Child thread:"+t);
t.start();
}
public void run()
{
try{
for(int i=5;i>0;i--){
System.out.println("Child Thread:"+i);
Thread.sleep(500);
}
}
catch(InterruptedException e){
System.out.println("Child interrupted.");
}
System.out.println("Exiting child thread");
}
}
class ThreadDemo{
public static void main(String args[]){
new NewThread();
try{
for(int i=5;i>0;i--){
System.out.println("main thread:"+i);
Thread.sleep(1000);
}
}
catch(InterruptedException e){
System.out.println("main thread interrupted.");
}
System.out.println("Main thread exiting");
}
}
|
同意楼上的,
main()是主线程
newThread 是子线程,当然是两个线程了
你只看到一次 new Thread();
是的,那是你生成的Thread, 但是别忘了主线程(main())也是一个线程呀。
可能你是初学者,我写了一个例子,可以运行的。
package csdn;
public class MyClass7 {
public MyClass7() {
}
public static void main(String[] args) {
MyClass7 myClass7 = new MyClass7();
myClass7.invokedStandalone = true;
MyClass7_NewThread t0=new MyClass7_NewThread(" Thread First ");
MyClass7_NewThread t1=new MyClass7_NewThread(" Thread Second ");
}
private boolean invokedStandalone = false;
}
class MyClass7_NewThread implements Runnable
{
Thread t;
MyClass7_NewThread(String threadName){
t=new Thread(this,threadName);
System.out.println(threadName+" starting .... " );
t.start();
}
public void run()
{
try{
for(int i=5;i>0;i--){
System.out.println(t.getName()+" "+i);
Thread.sleep(500);
}
}
catch(InterruptedException e){
System.out.println(t.getName ()+"interrupted.");
}
System.out.println("Exiting "+t.getName ());
}
}
你会明白些。:》
main()是主线程
newThread 是子线程,当然是两个线程了
你只看到一次 new Thread();
是的,那是你生成的Thread, 但是别忘了主线程(main())也是一个线程呀。
可能你是初学者,我写了一个例子,可以运行的。
package csdn;
public class MyClass7 {
public MyClass7() {
}
public static void main(String[] args) {
MyClass7 myClass7 = new MyClass7();
myClass7.invokedStandalone = true;
MyClass7_NewThread t0=new MyClass7_NewThread(" Thread First ");
MyClass7_NewThread t1=new MyClass7_NewThread(" Thread Second ");
}
private boolean invokedStandalone = false;
}
class MyClass7_NewThread implements Runnable
{
Thread t;
MyClass7_NewThread(String threadName){
t=new Thread(this,threadName);
System.out.println(threadName+" starting .... " );
t.start();
}
public void run()
{
try{
for(int i=5;i>0;i--){
System.out.println(t.getName()+" "+i);
Thread.sleep(500);
}
}
catch(InterruptedException e){
System.out.println(t.getName ()+"interrupted.");
}
System.out.println("Exiting "+t.getName ());
}
}
你会明白些。:》
|
main()是主线程
newThread 是子线程,当然是两个线程了
newThread 是子线程,当然是两个线程了