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 包的了解