//同时运行多个线程
class ThreadDemo10 implements Runnable {
public void run() {
for (int i = 0;i < 20;i++) {
System.out.print("@");
try {
Thread.sleep(3);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.print(" ThreadDemo10 is OVER!\n");
}
}
class ThreadDemo2 implements Runnable {
public void run() {
for (int i = 0;i < 20;i++) {
System.out.print("$");
try {
Thread.sleep(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.print(" ThreadDemo2 is OVER!\n");
}
}
class ThreadDemo11 extends Thread {
public void run() {
for (int i=0;i<5;i++) {
System.out.print("@-@_"+i+";");
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.print(" ThreadDemo11 end \n\n");
}
}
public class Test {
public static void main(String args[]) {
ThreadDemo10 mt1 = new ThreadDemo10();
ThreadDemo2 mt2 = new ThreadDemo2();
Thread m1 = new Thread(mt1);
Thread m2 = new Thread(mt2);
m1.start();
m2.start();
new ThreadDemo11().start();
}
}
取得和设置线程的名称、查看线程状态等。。。
//取得和设置线程的名称
public class getNameThread extends Thread{
public void run(){
for(int i=0;i<7;i++){
printMsg();
//延时是为了更好的观察和理解线程
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void printMsg(){
Thread t = Thread.currentThread();
String name = t.getName();
System.out.println("name="+name);
}
public static void main(String args[]){
getNameThread nt = new getNameThread();
nt.setName("test thread");
Thread nt1 = new Thread (nt);
Thread nt2 = new Thread (nt);
nt2.setName("Test Thread Two");
System.out.println("调用nt.star()之前,线程nt状态:"+nt.isAlive());
nt.start();
System.out.println("调用nt.star()之后,线程nt状态:"+nt.isAlive());
System.out.println("调用nt1.star()之前,线程nt1状态:"+nt1.isAlive());
nt1.start();
System.out.println("调用nt1.star()之后,线程nt1状态:"+nt1.isAlive());
System.out.println("调用nt2.star()之前,线程nt2状态:"+nt2.isAlive());
nt2.start();
System.out.println("调用nt2.star()之后,线程nt2状态:"+nt2.isAlive());
// nt.yield();
for(int i=0;i<5;i++){
nt.printMsg();
//延时是为了更好的观察和理解线程
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// nt.start();
}
}
后台线程与setDaemon()方法。
//后台线程与setDaemon()方法。
public class DaemonThread {
public static void main(String args[]){
ThreadTest tt=new ThreadTest();
Thread t=new Thread(tt);
//线程在启用之前调用了setDaemon(true)方法,则这个线程就变成了后台线程;
t.setDaemon(true);
t.start();
System.out.println("前台线程 OVER!");
}
}
class ThreadTest implements Runnable{
public void run(){
while(true){
System.out.println(Thread.currentThread().getName()+" is running.");
}
}
}
123
123