您的位置:首页 > 编程语言 > Java开发

Java#同时运行多个线程

2014-11-14 00:00 106 查看
摘要: Java#同时运行多个线程例子

//同时运行多个线程
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 多线程