标题: 进程有关知识总结 [打印本页] 作者: 黑马-zhangping 时间: 2012-10-19 20:37 标题: 进程有关知识总结 下面是我总结的进程的一些知识和例子,供大家分享
进程基本知识:
1、一个servlet有一个进程,多个线程(原因:1个tomcat一个进程)
2、来一个请求,开一个线程
3、java lang包中的类不用导入
4、线程:Source—Override/implement Methods
5、static修饰的变量private static int z=10):
多个线程共享一个资源(否则,只有对象一个有值,其他对象都为null)
6、public synchronized void run(){ }
线程同步(一个线程运行,另一个线程进不来)
7、线程常用的几种方法:
Thread.start()
Thread.run()
Thread.sleep() //毫秒为单位 1s=1000ms
Thread.stop()
8、双核CPU不能用synchronized 实现线程同步,单核可以
----------------------------------
1、线程的实现方式:
法1:1)类继承extends Thread
2)重写run()
3)封装一个对象,调用start()方法
特点:不能继承多个类,但简单
--------------------------
法2:1)实现implements Runnable
2)重写run()
3)伪装一个对象
T2 t =new T2();
Thread th=new Thread(t);
th.start();
特点:能实现多个接口,相对复杂些
public class T1 extends Thread{
private static int z = 10; //用 static 使多个线程共享一份资源
public synchronized void run() { //用 synchronized 实现线程同步,一个线程正在运行,另一个线程无法进入(针对单核CPU而言)
for(z=0;z<10;z++){
System.out.println(this.getName()+":"+z); //用 this.getName() 获取线程名称
}
}
public static void main(String[] args) {
T1 t = new T1();
t.start();
T1 t1 = new T1();
t1.start();
}
}
---------------------------------
public class T2 implements Runnable{
private static int i = 0;
public void run() {
while(true){
System.out.println(Thread.currentThread().getName()+":"+i++); //用 Thread.currentThread().getName() 获取线程名称
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
T2 t = new T2(); //伪装一个对象
Thread th = new Thread(t);
th.start(); //用start启动一个线程,不能用run(),否则会将run()当做一个普通的方法老调用
T2 t2 = new T2();
Thread th2 = new Thread(t2);
th2.start();
}
}