创建线程
方法一
public class MyThread extends Thread{ public MyThread(String name){ super(name); } 重写run方法 @Override public void run(){ for (int i=0;i<10;i++){ System.out.println(getName()+":正在执行!"+i); } } }
public class Demo{ public static void main(String[] args){ MyTread mt =new MyThread(“新线程”); mt.start(); for(int i=0; i<10;i++){ System.out.println("main线程!"+i); } } }
|
方法二
public calss MyRunnable implements Runnable{ @Override public void run(){ for(int i=0;i<20;i++){ System.out.println(Thread.currentThread().getName()+""+i); } } }
实现
public class Demo { public static void main(String[] args) { System.out.println("这是主线程"); Thread mt=new Thread("小强"); mt.start(); for (int i = 0; i < 10; i++) { System.out.println("旺财"+i); } } }
|
Thread和Runnable的区别
Runnable接口的优势
1,适合多个相同的程序代码的线程去共享同一个资源
2,可以避免java中的继承的局限性
3,增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立
4,线程池只能放入实现Runable或Callable类线程,不能直接放入继承Tread的类
线程同步