java多线程(一)——创建与启动线程
一、创建线程
1、继承java.lang.Thread类
重写run()方法。
2、实现java.lang.Runnable接口
实现run()方法
二、启动线程
1、调用start()方法,而不是run()或者别的方法。
2、通过实现Runnable接口创建的线程没有start()方法,需要利用Thread的构造函数。
Thread(Runnable target) Thread(Runnable target, String name) Thread(ThreadGroup group, Runnable target) Thread(ThreadGroup group, Runnable target, String name) Thread(ThreadGroup group, Runnable target, String name, long stackSize)
/** * 实现Runnable接口的类 * */ public class DoSomething implements Runnable { private String name; public DoSomething(String name) { this.name = name; } public void run() { for (int i = 0; i < 5; i++) { for (long k = 0; k < 100000000; k++) ; System.out.println(name + ": " + i); } } } /** * 测试Runnable类实现的多线程程序 * */ public class TestRunnable { public static void main(String[] args) { DoSomething ds1 = new DoSomething("阿三"); DoSomething ds2 = new DoSomething("李四"); Thread t1 = new Thread(ds1); Thread t2 = new Thread(ds2); t1.start(); t2.start(); } } /** * 测试扩展Thread类实现的多线程程序 * */ public class TestThread extends Thread{ public TestThread(String name) { super(name); } public void run() { for(int i = 0;i<5;i++){ for(long k= 0; k <100000000;k++); System.out.println(this.getName()+" :"+i); } } public static void main(String[] args) { Thread t1 = new TestThread("阿三"); Thread t2 = new TestThread("李四"); t1.start(); t2.start(); } }
三、实现Runnable接口的方式比继承Thread类的优势
1、可以避免java中单继承的限制。
2、可以共享资源。
NewThread newThread = new NewThread(); new Thread(newThread,"A").start(); new Thread(newThread,"B").start(); new Thread(newThread,"C").start();
都是这三个线程用的都是同一个newThread对象,那么newThread对象中的变量就可以共享了~

浙公网安备 33010602011771号