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

Java多线程学习

2014-04-17 20:07 393 查看
     Java实现多线程主要有两种方式,直接继承自Thread类,或者实现Runnable接口,后者实现较为灵活。

继承自Thread的实现如下:

import java.util.*;

class ThreadTest extends Thread
{
private String s;

public ThreadTest(String s)
{
this.s = s;
}

public void run() {
Random random = new Random();
while(true)
{
int t = (int)(random.nextDouble()*10000);
System.out.println("???"+s+" "+t);
try{
sleep(t);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}

public static void main(String[] args)
{

new ThreadTest("1111").start();
new ThreadTest("2222").start();
new ThreadTest("3333").start();

System.out.println("Hello World!");
}
}

实现Runnable接口的实现如下:
import java.util.*;

class RunnableTest implements Runnable
{
private String s;

public RunnableTest(String s)
{
this.s = s;
}

public void run()
{
Random random = new Random();
int n = 0;
while(true)
{
if(n++>10)
break;

int t = (int)(random.nextDouble()*10000);
System.out.println("num = "+n+"; name="+s+"; sleeptime="+t);

try{
Thread.sleep(t);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}

public static void main(String[] args) throws Exception
{
Thread t1 = new Thread(new RunnableTest("1111"));
Thread t2 = new Thread(new RunnableTest("2222"));

t1.start();
t2.start();

/*
单纯从代码上看,如果线程被生成了,但还未被起动,
调用它的join()方法是没有作用的。将直接继续向下执行,
因此,join必须在start调用后调用
*/
t1.join();
t2.join();

System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 线程 java