package my;
public class extendsT {
public static void main(String[] args) {
new ticketwindow().start(); //不能访问类型extendsT的封闭实例。
new ticketwindow().start();
new ticketwindow().start();
new ticketwindow().start();
}
class ticketwindow extends Thread{
private int tickets=100;
public void run() {
while(true) {
if(tickets>0) {
Thread th=Thread.currentThread();
String name=th.getName();
System.out.println(name+"发货"+tickets--+"张票");
}
}
}
}
}
//为什么执行不了啊 大神可以解释一下吗 而且new ticketwindow().start();有点不好理解
ticketwindow不应该和main方法同级别,应该放到extendsT类外
请问一下有哪些写extendsT外啊,什么写里面,搞的我好晕啊,书上也没明说。。
@老萌新51:
public class Test {
public static void main(String[] args) {
new ticketwindow().start(); //不能访问类型extendsT的封闭实例。
new ticketwindow().start();
new ticketwindow().start();
new ticketwindow().start();
}
}
class ticketwindow extends Thread{
private int tickets=100;
public void run() {
while(true) {
if(tickets>0) {
Thread th=Thread.currentThread();
String name=th.getName();
System.out.println(name+"发货"+tickets--+"张票");
}
}
}
}
new ticketwindow().start()可以理解为
ticketwindow tic = new ticketwindow();
tic.start();
这个类继承了线程类 实现了run方法 它现在就是一个线程对象 start是启动线程 只是写法简化了一下 没用参数接收 这样一句句写和那个一样的 唯一不同的是用对象接收了一下
Thread在jdk1.8支持的lambda表达式写着会简化很多 可以这样写
private int tickets = 0;
new Thread((Runable) () -> {
//具体实现代码
while(true) {
if(tickets<100) {
System.out.println(Thread.currentThread().getName();+"发货第"+tickets--+"张票");
}else return;
}).start();