黑马程序员技术交流社区
标题:
关于多线程currentThread()方法
[打印本页]
作者:
黄捷
时间:
2012-6-3 10:04
标题:
关于多线程currentThread()方法
看了多线程,自己下来实现了一下代码,代码如下:
class Ticket implements Runnable{
private int ticket=1;
public void run()
{
while(true)
{
if(ticket<=100)
{
try
{
currentThread().sleep(10);
}catch(Exception e){}
System.out.println(currentThread().getName()+"----"+ticket++);
}
}
}
}
public class Thread3
{
public static void main(String[] args)
{
Ticket t= new Ticket();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
Thread t4=new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
编译的时候提示,currenThread().sleep(10)和currentThread().getName() 找不到符号,为什么一定要写Thread.currentThread().sleep(10) 和Thread.currentThread().getName() 才能正确编译呢,老毕说的是可以直接用方法就是了,我也觉得直接调用方法就可以了,currentThread()本来就是获取当前线程的啊,为什么编译会说找不到符号呢?
作者:
杜俊彪
时间:
2012-6-3 10:12
老毕说的是可以直接用方法就是:是这么个意思, 你得静态导入你要执行的方法, 如: import static java.lang.Thread.currentThread; 然后就可以直接调用 了;
作者:
丰亚彬
时间:
2012-6-3 10:16
人家老毕是继承自Thread类,你是实现了Runnable接口,你说为什么不能用呢?Runnable就一个方法
作者:
何拴绪
时间:
2012-6-3 11:01
currentThread()方法是Thread类中的一个静态方法,所以你要获取当前线程就必须使用Thread.currentThread()的方式,
而你实现的是Runnable接口,所以不能写currenThread().sleep(10)和currentThread().getName() ,如果你继承Thread类就可以这样写。
作者:
杨海波
时间:
2012-6-3 11:19
哥们注意啊
1,看看api啊 这个currentThread()是Thread类的一个方法 他返回是当前正在执行一个静态的Thread对象的引用,方法当然要对象或是类调用才可以啊
2,你实现的是Runnable接口,接口里的方法是抽象的,所以你必须复写
currenThread().sleep(10)和currentThread().getName()
复制代码
这样肯定是不对的都应该加上Thread才可以。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2