Java多线程使用Runnable接口创建线程时,Thread thread1 = new Thread(t1, "MyThread1");这一步啥意思
packagemythread;publicclassMyRunnableimplementsRunnable{publicvoidrun(){System.out.pr...
package mythread;
public class MyRunnable implements Runnable
{
public void run()
{
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args)
{
MyRunnable t1 = new MyRunnable();
MyRunnable t2 = new MyRunnable();
Thread thread1 = new Thread(t1, "MyThread1");
Thread thread2 = new Thread(t2);//把t1放在括号啥意思???
thread2.setName("MyThread2");
thread1.start();
thread2.start();
}
} 展开
public class MyRunnable implements Runnable
{
public void run()
{
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args)
{
MyRunnable t1 = new MyRunnable();
MyRunnable t2 = new MyRunnable();
Thread thread1 = new Thread(t1, "MyThread1");
Thread thread2 = new Thread(t2);//把t1放在括号啥意思???
thread2.setName("MyThread2");
thread1.start();
thread2.start();
}
} 展开
3个回答
展开全部
MyRunnable t1 = new MyRunnable();
-----
这个语句表明实例化了一个MyRunnable对象t1,MyRunnable是一个Runnable接口的类。这点很好理解吧。
Thread thread1 = new Thread(t1, "MyThread1");
------
这个语句也是实例化了一个Thread对象thread1,这点和t1是一样理解的,就是:生成了一个Thread对象放在内存里面,有一个指针thread1指向了它。
thread1.start();
--------
这里,才是真正意义上的启动了“thread”。看看以下API对线程的定义:
“A thread is a thread of execution in a program. ”
线程是就是一段程序的执行过程。这个“过程”被抽象成一个对象(确切的说是类):java.lang.Thread。(面向对象的思想不就是这样的吗?)。
于是,Java的API就规定了这段“在你的程序里被执行的程序”必须是实现了java.lang.Runnable接口的类或者继承java.lang.Thread类,的run方法里的代码。
简单的说,你要启动一个线程,就必须实例化一个Thread对象,传入一个符合规定(实现Runnable或者继承Thread)“要运行的线程对象”MyJob,然后调用start()方法,告诉虚拟机:你帮我启动一个新的线程,执行MyJob里面的run方法的代码吧。
楼主如果还不理解,建议看看关于进程与操作系统相关的知识,对你有帮助的。
-----
这个语句表明实例化了一个MyRunnable对象t1,MyRunnable是一个Runnable接口的类。这点很好理解吧。
Thread thread1 = new Thread(t1, "MyThread1");
------
这个语句也是实例化了一个Thread对象thread1,这点和t1是一样理解的,就是:生成了一个Thread对象放在内存里面,有一个指针thread1指向了它。
thread1.start();
--------
这里,才是真正意义上的启动了“thread”。看看以下API对线程的定义:
“A thread is a thread of execution in a program. ”
线程是就是一段程序的执行过程。这个“过程”被抽象成一个对象(确切的说是类):java.lang.Thread。(面向对象的思想不就是这样的吗?)。
于是,Java的API就规定了这段“在你的程序里被执行的程序”必须是实现了java.lang.Runnable接口的类或者继承java.lang.Thread类,的run方法里的代码。
简单的说,你要启动一个线程,就必须实例化一个Thread对象,传入一个符合规定(实现Runnable或者继承Thread)“要运行的线程对象”MyJob,然后调用start()方法,告诉虚拟机:你帮我启动一个新的线程,执行MyJob里面的run方法的代码吧。
楼主如果还不理解,建议看看关于进程与操作系统相关的知识,对你有帮助的。
展开全部
很简单啊
这个是Thread的构造函数
public Thread(Runnable r)
{
}
因为Runnable 借口没有启动线程的方法start,所以才要非一步用thread类的start()来启动。
我觉得java设计简直懒死了
这个是Thread的构造函数
public Thread(Runnable r)
{
}
因为Runnable 借口没有启动线程的方法start,所以才要非一步用thread类的start()来启动。
我觉得java设计简直懒死了
更多追问追答
追问
程序中并没有这个构造函数呀
追答
有的。亲。查看源码你就可以可以看到,他有好多无聊的构造函数
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是两种更改名字的方法啊 一种是在参数列表里 直接加,另外一种是setName
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询