Java多线程学习

来源:互联网 发布:电脑编程有没有女孩 编辑:程序博客网 时间:2024/05/17 07:56


     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("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");}}


0 0