1. @进程 :程序的一次执行 (程序代码, 程序数据,程序资源)
@线程 :进程中程序代码的一个执行序列 (可共享访问进程中的数据和资源,操作系统按线程来调度程序的执行)
2.创建线程的方法 :
@定义一个线程类,它继承类Thread并重写其中的方法run(),用这种方法定义的类不能再继承其他类(因为单继承)
class SimpleThread extends Thread{ public SimpleThread(String str){ super(str); } public void run(){ for (int i = 0; i < 10; i++){ System.out.println(i + " " + getName()); try{ sleep((int)(Math.random() * 1000)); } catch (InterruptedException e){ } } System.out.println("DONE! " + getName()); } }
@提供一个实现接口Runnable的类作为线程的目标对象(可以再继承其他类)
public class Clock extends java.applet.Applet implements Runnable{ Thread clockThread; public void start(){ if (clockThread== null){ clockThread= new Thread(this, "Clock"); clockThread.start(); } } public void run(){ while (clockThread!= null){ repaint(); try{ clockThread.sleep(1000); }catch (InterruptedExceptione){ } } } public void paint(Graphics g){ Date now = new Date(); g.drawString(now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds(), 5, 10); } public void stop(){ clockThread.stop(); clockThread= null; } }
3.线程生命周期及控制 ,各方法的含义:start,sleep,suspend,resume,wait,notify,stop,join(等待线程执行完毕),yield等
4.线程优先级 :最低优先级1,最高优先级10,默认优先级5.可用getPriority( )和setPriority(int p)来获得和设置
5.多线程互斥: 对象互斥锁
@用关键字volatile 来声明一个共享数据(变量)
@用关键字synchronized 来声明一个操作共享数据的方法或一段代码
6.多线程同步
@用wait()和notify()/notifyAll()方法(在java.lang.Object类中定义)来协调线程间的运行进度关系
@notify()/notifyAll()方法和wait()方法都只能在被声明为synchronized的方法或代码段中调用
7.守护线程
@为其它线程提供服务的线程,它一般应该是一个独立的线程,它的run()方法是一个无限循环
@守护线程与其它线程的区别是,如果守护线程是唯一运行着的线程,程序会自动退出
@setDaemon(true)使线程成为守护线程(必须在start之前调用)
setDaemon(false)使线程成为一般线程(必须在start之前调用)
8.集合基本概念
@Collection 接口是一组允许重复的对象
@Set 接口继承Collection,但不允许重复
@List 接口继承Collection,允许重复,并引入位置下标
@Queue接口继承Collection,提供其他的插入、提取和检查操作
@Map 接口既不继承Set 也不继承Collection,将键映射到值的对象
9.java.util.conturrent 包的了解