黑马程序员技术交流社区
标题:
改变多线程名称怎么 弄的
[打印本页]
作者:
学习代码
时间:
2014-3-17 09:37
标题:
改变多线程名称怎么 弄的
class Demo1 extends Thread
{
private String name;
Demo1(String name)
{
super(name);
}
public void run()
{ while(true)
{
System.out.println(d.getName()+"hello world");
}
}
}
class Demo
{
public static void main(String[] args)
{
Demo1 d = new Demo1("zhangsan");
Thread t = new Thread();
t.start();
}
}
复制代码
这样不可以吗 请大家指教一下
作者:
杯之水
时间:
2014-3-17 10:24
不可以,在主函数里面定义的对象d,在类Demo1中找不到该符号,可以通过static Thread currentThread():获取当前线程对象。getName(): 获取线程名称,来获取多线程名称,即Thread.currentThread().getName()。也可以直接用this.getName来获取改变后的多线程名称。
作者:
osully
时间:
2014-3-17 10:30
老实说 你的程序写的问题很大
下面肯定有你想要的
class Demo1 extends Thread {
private String name;
Demo1(String name) {
this.name = name; // 此处用super(name)不合适 , 因为父类构造函数是用来分配线程
}
public String getDemo1Name() {
return name;
}
public void run() {
while (true) {
// Thread.currentThread().getName() 获取当前线程名字
System.out.println(Thread.currentThread().getName() + "..."
+ this.getDemo1Name() + "..." + "hello world");
}
}
}
public class Demo {
public static void main(String[] args) {
Demo1 d = new Demo1("zhangsan");
Thread t = new Thread(d); // 创建线程通常把对象放进去
t.setName("yours"); // 用setName方法修改线程的名字
t.start();
}
}
复制代码
作者:
上官睿鹏
时间:
2014-3-17 10:37
本帖最后由 上官睿鹏 于 2014-3-17 10:42 编辑
不知道你要问你的是什么意思?但你贴上来的代码问题不少
class Demo1 extends Thread
{
private String name;
Demo1(String name)
{
super(name);
}
public void run()
{ while(true)
{
System.out.println(d.getName()+"hello world");//d是拿来的啊?Demo1里面并没有定义
}
}
}
class Demo
{
public static void main(String[] args)
{
Demo1 d = new Demo1("zhangsan");
Thread t = new Thread();//你的Demo1是继承Thread的,所以这句话去掉
t.start(); //然后把这句话改成d.start()
}
}
复制代码
改成这样子估计就可以了:
class Demo1 extends Thread
{
private String name;
Demo1(String name)
{
this.name = name;
}
public String toString(){
return "name:" + name;
}
public void run()
{
while(true) //最好不要用死循环,等下停不下来的
{
System.out.println(name+"hello world");
}
}
}
class Demo
{
public static void main(String[] args)
{
Demo1 d = new Demo1("zhangsan");
d.start();
}
}
复制代码
作者:
osully
时间:
2014-3-17 10:43
我刚又想了一下 可能你的意思是这样的
因为你问问题的时候没问清楚,大家也不知道什么意思
所以再增加一种如下 :
应该更贴近你要的
class Demo11 extends Thread {
private String name;
Demo11(String name) {
super(name);
}
public void run() {
while (true) {
// Thread.currentThread().getName() 获取当前线程名字
System.out.println(Thread.currentThread().getName() + "..."
+ "hello world");
}
}
}
public class Democopy1 {
public static void main(String[] args) {
Demo11 d = new Demo11("zhangsan");
d.start(); // 因为你是继承的Thread 所以直接可以调用start();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2