进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程!线程总是属于某个线程,进程中的线程共享进程的内存
注意:对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程,启动新的线程要调用start()方法
在Java中提供了两种方式实现线程:1、继承Thread类
package unit_fifteen; public class TestThread extends Thread { private String name; public TestThread(String name) { this.name = name; } @Override public void run() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 2; j++) { System.out.println(name + ":" + i); } } } //继承Thread类 public static void main(String[] args) { //可以创建没有命名的线程 TestThread tone = new TestThread("阿三"); TestThread ttwo = new TestThread("李四"); tone.start(); ttwo.start(); } }
2、实现Runnable接口
package unit_fifteen; public class TestRunnnable implements Runnable { public static void main(String[] args) { //实现Runnable接口,可以创建没有命名的线程 TestRunnnable dsone = new TestRunnnable("阿三"); TestRunnnable dstwo = new TestRunnnable("李四"); //以实现了Runnable接口的类的对象作为参数创建Thread对象 Thread tone = new Thread(dsone); Thread ttwo = new Thread(dstwo); tone.start(); ttwo.start(); } private String name; public TestRunnnable(String name) { this.name = name; } @Override public void run() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 2; j++) { System.out.println(name + ":" + i); } } } }