首页 新闻 会员 周边

lambda表达式多线程,名称怎么继承

0
悬赏园豆:5 [已解决问题] 解决于 2021-12-21 16:18

public class TestTicket {
public static void main(String[] args) {
Thread thread=new Thread("车站窗口");
Thread thread1=new Thread("网络");
Thread thread2=new Thread("黄牛");
new Thread(()->{
for (int i = 1; i <=10 ; i++) {
// String name=Thread.currentThread().getName();//获取当前线程的名称
System.out.println(Thread.currentThread().getName()+"抢到第"+i+"张票,还有"+(10-i)+"张票");
try {
Thread.sleep(500);//休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
thread.start();
thread1.start();
thread2.start();
}
}

无-痕的主页 无-痕 | 初学一级 | 园豆:197
提问于:2021-11-19 15:52
< >
分享
最佳答案
0

不太清楚你想问的
是这意思?

Thread t=new Thread(()->{
            for (int i = 1; i <=10 ; i++) {
// String name=Thread.currentThread().getName();//获取当前线程的名称
                System.out.println(Thread.currentThread().getName()+"抢到第"+i+"张票,还有"+(10-i)+"张票");
                try {
                    Thread.sleep(500);//休眠
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            
        });
t.setName("名字");
t.start();
收获园豆:5
蓝羽code | 菜鸟二级 |园豆:313 | 2021-11-19 18:46

不是,你这相当于new了一个对象,然后赋值。我的想法是,如果有几个对象,调用String name=Thread.currentThread().getName();,是否可以直接取值?

无-痕 | 园豆:197 (初学一级) | 2021-11-20 17:47

@无-痕: 可以啊
Thread.currentThread().getName();

这就是取当前线程的名字啊

蓝羽code | 园豆:313 (菜鸟二级) | 2021-11-20 17:56

@蓝羽code:
Thread thread=new Thread("车站窗口");
Thread thread1=new Thread("网络");
Thread thread2=new Thread("黄牛");
new Thread(()->{
for (int i = 1; i <=10 ; i++) {
String name=Thread.currentThread().getName();//获取当前线程的名称
}).start();
取不了我上面赋予的名称 ,因为是相当于new的一个新对象。

无-痕 | 园豆:197 (初学一级) | 2021-11-20 18:05

@无-痕: 你下面也没用上面的线程啊

你不是重新new了一个线程嘛

蓝羽code | 园豆:313 (菜鸟二级) | 2021-11-20 18:07

@蓝羽code: thread.start();
thread1.start();
thread2.start();

无-痕 | 园豆:197 (初学一级) | 2021-11-20 18:14

@无-痕: 但是你这个三个线程里边儿没有实现呀,没有任何内容,什么都不会做,也不会打印东西。

蓝羽code | 园豆:313 (菜鸟二级) | 2021-11-20 18:17

@蓝羽code: 是的,我就想传进去。然后老师说我这相当于重新new了一个,所有我赋值的名称是传不进去的。

无-痕 | 园豆:197 (初学一级) | 2021-11-20 18:21

@无-痕: 你非要这样的话只能这样写

        Thread thread=new Thread(() -> {
            String name=Thread.currentThread().getName();//获取当前线程的名称
            System.out.println(name);
        },"车站窗口");

        Thread thread1=new Thread(() -> {
            String name=Thread.currentThread().getName();//获取当前线程的名称
            System.out.println(name);
        },"网络");

        Thread thread2=new Thread(() -> {
            String name=Thread.currentThread().getName();//获取当前线程的名称
            System.out.println(name);
        },"黄牛");

        thread.start();
        thread1.start();
        thread2.start();
蓝羽code | 园豆:313 (菜鸟二级) | 2021-11-20 18:35

@蓝羽code: 是的 ,感觉还没有接口好

无-痕 | 园豆:197 (初学一级) | 2021-11-20 18:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册