1、Java 总结之进程和线程1. (1) 将并发完成的每一件事情称为线程。(2) 一个进程是包含自身地址的程序通常将正在运行的程序称为进程,进程内部的任务称为线程,线程是进程的实体,一个进程可以拥有多个线程。一个线程是进程内的一个单一的顺序控制流程,指的是一个进程可以同时运行几个任务,每个任务有一个线程来完成。即多个线程可以同时运行,并且在一个进程内执行不同的任务。2. 创建进程 在 Java 中,线程也是一种对象,只有实现 Runnable 接口的类的对象才能成为线程。(1) 继承 Thread 类Thread 类是 java.lang 包中的一个类,从这个类中实例化的对象代表线程,程序员启动
2、一个新线程需要建立 Thread 实例。例: public Thread (String threadname)public Thread ()_第一个构造方法是创建一个名称为 threadname 的线程对象public class ThreadTest extends Thread/启动线程public static void main(String args)new ThreadTest().start();实现 Runnable()接口如果程序员需要继承其他类 (非 Thread 类)并是该程序可以使用线程,就需要使用 Runnable 接口例:public Thread (Runna
3、ble r)public Thread (Runnable r,String st)两种方法的比较(1) 实现 Runnable 接口从面向对象的角度来看,Thread 类是一个虚拟处理机严格封装,因此只有当处理机模型修改或扩张时,才应该继承。(2) 继承 Thread 类当一个 run()方法体现在继承 Thread 的类中时,可以用 this 指向实际控制运行的 Thread 实例,不在需要 “Thread.currenThread().sleep()”。相关应用程序 继承 Thread 类public class ThreadTest extends Thread / 指定类继承 Thr
4、ead 类private int count = 10;public void run() / 重写 run()方法while (true) System.out.print(count + “ “); / 打印 count 变量if (-count = 0) / 使 count 变量自减,当自减为 0 时,退出循环return; / 退出程序public static void main(String args) new ThreadTest().start(); / 启动线程Runnable 接口public class ThreadDemo implements Runnable Ove
5、rridepublic void run() for (int i = 0; i 0) / 如果总票数大于 0try Thread.sleep(1000); / 线程休眠 catch (Exception e) e.printStackTrace();System.out.println(“剩余票数为:“ + -num);/ 输出提示信息public static void main(String args) CopyOfThreadSafeTest t = new CopyOfThreadSafeTest(); / 定义本类对象Thread tA = new Thread(t); / 定义线
6、程对象Thread tB = new Thread(t);Thread tC = new Thread(t);Thread tD = new Thread(t);tA.start(); / 驱动线程tB.start();tC.start();tD.start();同步方法:public class Example int num = 100;public synchronized void doit() / 定义同步方法if (num 0) try Thread.sleep(10); catch (Exception e) e.printStackTrace();System.out.println(“tickets“ + -num);public void run() while (true) doit(); / 在 run()方法中调用该同步方法