1. java Thread 问题
肯定是 d. targetObject instanceof Runnable
你的去补充下 创建线程的两种方式,
1.继承Thread 类
2.实现Runnable 接口。
Thread t = new Thread(new Runnable(){public void run(){do something...}});
2. java里面的Thread类存在的意义是什么
Runnable是接口,只规定了run方法,本身不干活的。
你可以用任何方式实现Runnable,Thread类也是Runnable的一个具体实现,它的实现方式是启动一个新的线程,并执行run方法。
这样的设计Java里面到处都是,简直成为一个常态。
接口是抽象的一个体现,只抽象功能,并不理会具体属性和实现。
3. java,线程Thread(Runnable target)
你的理解很正确,只要是实现了Runnable接口的类都可以传进去。
这个参数可以是API中已经有的,也可以是自己写的。
常用的创建线程的方法有两种,第一种就是继承Thread类,直接new
出来就可以,Thread类本身也实现了Runnable接口。
第二种方法就是实现Runnable接口里面的run方法。
语法正如你的代码一样
4. java中多线程常见的几个参数
java中多线程常见的几个参数
sleep:在指定的毫秒数内让当前正在执行的线程休眠(暂停执行).
此操作受到系统计时器和调度程序精度和准确性的影响。
该线程不丢失任何监视器的所属权。
调用sleep的时候锁并没有被释放。
休眠
Java SE5引入了更加显示的sleep()作为TimeUnit类的一部分,这个方法允许你指定sleep()延迟的时间单元,因此可以提供更好的可阅读性。
wait:调用wait使线程挂起,直到线程得到了notify或notifyAll消息,线程才会进入就绪状态。
使你可以等待某个条件发生变化,而改变这个条件超出了当前方法的控制能力。
线程的执行被挂起,对象上的锁被释放。意味着另一个任务可以获得这个锁。
因此在该对象中的其他synchronized方法可以在wait期间被调用。
yield:相当于:我的工作已经做的差不多了,可以让给别的线程使用CPU了。
当调用yield时,你也是在建议具有相同优先级的其他线程可以运行。
对于任何重要的控制或在调整应用时,都不能依赖于yield。
yield并不意味着退出和暂停,只是,告诉线程调度如果有人需要,可以先拿去,我过会再执行,没人需要,我继续执行
调用yield的时候锁并没有被释放。
interrupt:中断线程。
Thread类包含interrupt()方法,因此你可以中止被阻塞的任务。
这个方法将设置线程的中断状态。
如果一个线程已经被阻塞,或者试图执行一个阻塞操作,那么设置这个线程的中断状态将抛出InterruptedException。
当抛出该异常或者该任何调用Thread.interrupted()时,中断状态将复位。
你在Executor上调用shutdownNow(),那么它将发送一个interrupt()调用给他启动的所有线程。
5. Java中线程Thread有没有带参数的run方法呀
没有,线程中没有带参数的run方法。
如果想要实现带参数的run方法:
1、定义线程内变量
2、在继承thread的时候,增加带参数的构造函数,初始化线程内变量
3、在run方法操作线程内变量,以达到类似传参的效果。
示例:
classMyThreadextendsThread{
inta=0;//定义线程内变量
publicMyThread(inta){//定义带参数的构造函数,达到初始化线程内变量的值
this.a=a;
}
@Override
publicvoidrun(){
this.a++;//线程内变量自增
}
}
6. java线程里面Thread thread=new Thread(file,"aaa"),这里面第二个参数什么意思啊
线程名称,这个可以自定义,如果不写的话现正也会自己定义一个名字(thread-1),你也可以在run方法里使用thread.getName()来查看。
7. JAVA的Thread类的构造方法
Java的线程是通过java.lang.Thread类来实现的
构造方法:
Thread()
Thread(Runnable�0�2target)
参数:target 称为被创建线程的目标对象。创建目标对象target的类负责实现 Runnable接口,给出该接口中run()方法的方法体。
利用构造方法创建新线程对象后,进入线程的新建状态。
8. java初始化Thread t1 = new Thread(new TimePrinter(1000, "Fast Guy"))是什么意思
Thread(Runnable target)
Thread(String name)
以上是api中的两个thread的一个参数的构造方法,均是为了分配一个新的线程。
两个构造函数一个传入的是runnable对象,一个是string这个线程的名字。
纵观你的java类,new TimePrinter(1000, "Fast Guy")即为创建了一个你当前类的对象,而你当前类实现了Runnable 接口,即你新建一个当前类的对象即为runnable对象,如此我们可以很清晰的看到new Thread(new TimePrinter(1000, "Fast Guy")),向Thread t1中传递的为一个runnable对象,即为这个t1的线程中绑定了你当前类的一个run方法在其中。
而接下来,t1.start();即为启动当前类的run方法,传递进去的1000即为线程Thread.sleep(pauseTime); 的睡眠时间。
整观整个java类的作用即是打印输出你传入的name名字加当前时间,线程睡眠一秒钟之后。不停的循环打印你当前的名字和时间。
PS:多看api,多动脑筋想问题,多写代码,总有一天你也会成长为一个高手。