Java基础学习第六周总结

一、知识点概括

1.异常

 

2.线程

 

 

 

 

 二、总结:

I.线程与进程:线程属于进程,是进程的一个执行单元,负责程序的执行

II.线程的好处:效率高,多线程之间互不影响

如:

单核心线程cpu:

1)cpu再在多个线程之间进行切换,轮流执行多个线程

2)效率低

3)切换速度块(1/n毫秒)

4核心8线程:

1)有8个线程可同时执行8个线程

2)8个线程在多个任务间进行切换

3)速度是单线程cpu的8倍

III.主线程:执行主方法(main)的线程

单线程程序:Java程序中只有一个线程,执行从main方法开始,从上到下依次执行

多线程程序:

1)通过创建Thread子类实现(java.util.Thread:是描述线程的类)

      结果是多个线程并发执行,主线程和其他创建的新线程(执行run方法)

2)通过实现Runnable接口(java.lang.Runnable:类必须定义一个无参run()方法)

IV.实现Runnable接口创建多线程的好处:

1)避免了单继承的局限性:

      一个类只能继承一个类,而实现Runnable接口,还可以继承其他的类,实现其他接口

2)增强了程序的扩展性,降低了程序的耦合性

      把设置线程任务和启动新线程进行分离

V.等待唤醒案例:

创建一个消费者线程:告知生产者空缺商品的种类和数量,然后调用wait方法

创建一个生产者线程:生产商品,然后唤醒消费者

//发现这样写很是简洁,但是刚开始学习还是一步一步分开写比较好,这样写还是熟练之后再说吧,不过学习一下还是蛮好的

public class Test{
    public static void main(String[] args){
        //创建锁对象,保证唯一
        Object obj = new Object();
        //创建一个消费者线程
        new Thread(){
            @Override
            public void run(){
            //一直等待
            while(true){
                    //保证等待和唤醒的线程只能有一个执行,需要使用同步技术
                    syncharonized (obj){
                        System.out.println("告知老板要的商品的种类和数量");
                        //调用wait方法
                        try{
                            obj.wait();
                        }catch (InterruptedException e){
                            e.printStackTrace();
                        }
                        //唤醒之后执行的代码
                        System.out.println("商品补齐,可以购买了!");
                        System.out.println("--------------");
                    }
                }
            }
        }.start();
        
        //创建一个生产者线程
        new Thread(){
            @Override
            public void run(){
                //一直生产商品
                while(true){
                    try{
                        Thread.sleep(2000);//花2秒生产
                    }catch(InterruptedException e);
                        e.printStackTrace();
                    }
                //保证等待和唤醒只能有一个在执行,需要使用同步技术
                syncharonized (obj){
                    System.out.println("生产完成,唤醒消费者");
                    //调用notify方法
                    obj.notify();
                }
            }
        }.start();
    }

VI.线程池:

即容纳多个线程的容器,里面的线程可以反复使用,省去了频繁创建新线程的麻烦,解决了资源

线程池(容器)--> 集合(ArrayList,HashSet,LinkedList<Thread>,HashMap)

合理利用线程池的好处:

1)降低资源消耗

2)提高响应速度

3)提高线程的可管理性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值