import java.lang.Thread;
1.创建线程 Thread th=new Thread();
ps: Thread th=new Thread() {
public void run() {
System.out.println("run方法");
}
};
Thread th=new Thread(new Runnable());
2.启动线程:th.start();
注意:不是调用run方法。run方法并非是由刚创建的新线程所执行的,而是被创建新线程的当前线程所执行的。也就是被执行创建代码的线程所执行的。想要让创建的新线程执行run方法,必须调用新线程的start()。
线程名
它有助于我们区分不同的线程。
public class MyRunnable implements Runnable{
@Override
public void run() {
System.out.println("myrunnable run()");
}
}
MyRunnable myrunnable=new MyRunnable();
Thread th=new Thread(myrunnable,"New Threads") ;
th.start();
System.out.println(th.getName());
Runnable并非Thread的子类,所以没有getName()方法。可以通过以下方法获取当前线程的引用:
Thread.currentThread();
获取Runnable线程名:
String name=Thread.currentThread().getName();
举例
首先获取当前线程的名字。然后开启10个新线程,输出相应线程的内容。
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
for(int i=1;i<10;i++) {
new Thread(""+i) {
public void run() {
System.out.println("Thread "+getName()+"running");
}
}.start();
}
}
运行结果如下:
main
Thread 1running
Thread 2running
Thread 3running
Thread 4running
Thread 5running
Thread 6running
Thread 9running
Thread 7running
Thread 8running
这里线程9出现在了7和8之前,是因为执行线程的顺序并非是有序的。线程是并行执行而非顺序的。