JAVA课后总结(多线程,生产者消费者模式)

多线程

多线程:一个进程中使用多个线程来完成不同的工作,多线程是交替占用内存资源执行的,并非并行执行。

1.进程:进程是程序的一次动态执行过程。

2.线程:线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而且线程必须在某个进程内执行。

主线程:每个程序至少自动拥有一个线程,即:主线程--------public static void main()主线程入口

创建多线程

定义一个线程类通常有两种方法: 1.继承 java.lang.Thread类 2.实现 java.lang.Runnable接口。

Thread类 的五种状态

1.创建状态 2.就绪状态 3.阻塞状态(Blocked) 4.运行状态(Start) 5.死亡状态(Stop)

Thread类 的常用方法

void run() ;     执行任务操作的方法                           void sleep(long millis) ;    使该线程休眠

void start() ;    使该线程开始执行                          void join() ;    等待该线程终止

 void interrupt() ;    中断线程                                   void yield() ;    礼让其他线程执行

实现线程同步

关键字:synchronized                (注:volatile  实现多线程的可见性)

同步方法: 访问修饰符 synchronized 返回类型 方法名{ }------public  synchronized void make(){}

同步代码块: synchronized(this){ //需要同步访问控制的代码  }

实现生产者消费者模式(线程间通信)

常用方法:1.   wait()  ;   挂起当前线程,释放共享资源锁  

                    2.notify();   唤起线程           3.notifyAll();   唤起所有被挂起的线程

参考代码:

public class Test {
volatile static Object str;

}            //定义一个线程共享资源。

class Shengchan extends Thread{            //生产者线程类继承Thread类
Object str;           
public Shengchan(Object str) {            //构造方法
this.str = str;
}
@Override
public void run() {         //重写run方法
while (true) {
synchronized (str) {           //使用同步代码块访问共享资源
if(Test.str!=null) {
try {
str.wait();             //挂起当前线程
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Test.str=System.currentTimeMillis()+"";       // 生成当前时间
System.out.println("生成的时间"+Test.str);
str.notify();                        //唤醒线程
}
}
}

}

class Xiaofei extends Thread{             //消费者线程类继承Thread类
Object str;
public Xiaofei(Object str) {
super();
this.str = str;
}
@Override
public void run() {
while (true) {
synchronized (str) {
if(Test.str==null) {
try {
str.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Test.str=null;
System.out.println("消费者消费");
str.notify();
}
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值