遇到的问题:
多线程生产者与消费者模型;尚未解决!
jar
---------------
jar cvf xxx.jar -C classes/ .
进程
-----------------
进程之间内存式隔离的。内存不共享。
线程
-----------------
程序执行过程中,并发执行的代码段。
线程之间可以共享内存。
Thread : 线程类。
start()//通知cpu,可以开始执行该线程。
run()//线程具体执行的代码段。
Thread t = new Thread();
t.start();
Thread.currentThread()//得到当前的执行线程。
yield()//让线程放弃cpu的抢占权。
sleep(int mils)//让当前线程休眠指定的毫秒数.
线程安全:增加了同步处理。确保在同一时刻,只有一个线程执行同步代码。
同步方法使用的当前对象作为同步对象。
静态方法可以加同步处理,使用Class作为同步对象。
××× :
Box ://3
Waiter//守护线程 daemon Thread.setDaemon(true);
yield()
join()
sleep(int ms);
setDaemon(true);//线程启动前设置
isDaemon();//指定线程是否是守护线程
start();//启动线程
run();//
notify()//选择一个监控器对象等待队列中的线程进行通知。
notifyAll()//选择所有监控器对象等待队列中的线程进行通知。
wait()//将当前线程放入监控器的等待队列中。
wait(int n )//线程进入到等待队列后,最多等待n长时间,时间一旦,自动唤醒。
例:5辆车依次通过山洞
public class ThreadDemo {
public static void main(String[] args) throws Exception {
Thread t1=new Thread(new MultiThreads(new Car("one")));
Thread t2=new Thread(new MultiThreads(new Car("two")));
Thread t3=new Thread(new MultiThreads(new Car("three")));
Thread t4=new Thread(new MultiThreads(new Car("four")));
Thread t5=new Thread(new MultiThreads(new Car("five")));
t1.start();
System.out.println("t2---"+t2.isAlive());
t1.join();
t2.start();
System.out.println("t1---t2"+t1.isAlive()+"--"+t2.isAlive());
t2.join();
t3.start();
t3.join();
t4.start();
t4.join();
t5.start();
t5.join();
}
}
class MultiThreads implements Runnable {
private Car car;
public MultiThreads(Car car) {
super();
this.car = car;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public void run() {
try {
System.out.println(car.getName() + "-begin");
car.cross();
Thread.sleep(1000);
System.out.println(car.getName() + "-end");
System.out.println();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Car {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Car() {
super();
}
public Car(String name) {
super();
this.name = name;
}
public void cross() {
System.out.println(getName() + "----cross through----");
}
}
转载于:https://blog.51cto.com/11312010/1773896