【名师课堂】Java高级开发

【名师课堂】Java高级开发

Java核心第三部
156课时 |
31736人已学 |
(17 评论)

加入学习
加入学习

线程池:多个线程封装在一起进行操作。

并发访问的程序包:java.util.concurrent.

对于此线程池的操作的和心累和接口就定义在此包之中。有两个核心的接口:

ExecutorService:普通的执行线程池的接口

ScheduledExecutorService:调度线程池(某些操作可以定时完成)的接口

线程池的创建:Executors类。

1.创建无大小限制的线程池:

2.创建固定大小的线程池:new fix

3.单线程池

4.创建定时调度池

[展开全文]
想飞的我 · 2017-06-25 · 线程池(线程池概念) 0

synchronized可以解决同步问题,但不能解决重复操作问题。解决这个问题需要等待和唤醒机制。

sleep()和wait()的区别:

sleep()是Thread类中定义的方法,到了一定时间后该休眠的线程自动唤醒

wait()是Object类中定义的方法,如果要唤醒必须用notify()唤醒。

[展开全文]

同步的本质:一个线程等待另外一个线程执行完毕后才可以继续执行,但是如果现在相关的几个线程彼此之间都在等待着(同步),那么就会造成死锁。

[展开全文]
想飞的我 · 2017-06-25 · 线程的同步与死锁(死锁) 0

所谓的同步指的是所有的线程不是一起进入到方法中执行,而是按照我们的顺序一个一个进来。

如果要想实现这个“锁”,那么可以采用synchronized关键子来进行处理,同步代码块和同步方法。

1.同步代码块:在方法里拦截,进入到方法中的线程依然会有很多个。

2.同步方法:将关键字放到方法上

同步虽然可以保证数据的完整性(线程安全操作),但执行的速度会很慢。

 

[展开全文]
想飞的我 · 2017-06-25 · 线程的同步与死锁(同步处理) 0

线程的同步和死锁:每一个线程对象操作的轮番抢占资源延迟问题。

不同步的唯一好处是处理速度快(多个线程并发执行)。

[展开全文]

使用匿名内部类来实现接口最大的好处是节约了一个文件

面向对象编程要求在于:结构必须非常完整

前提接口里只允许有一个方法

@FunctionalInterface//是一个函数式编程接口,只允许有一个方法

[展开全文]
sky_fengbiubiu · 2017-06-24 · Lambda表达式 0

在子类继承接口之后,如果该接口又继续添加方法,则此接口将无法继续使用

1.使用default 来定义普通方法,需要通过对象调用

package num.com;

interface IMessage{
    public default void Print(){
        System.out.println("Print");
    }
    public void print();
}

class Message implements IMessage{
    public void print(){
        System.out.println("print");
    }
}


public class TestDemo5 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Message ms=new Message();
        ms.print();
        ms.Print();

    }

}

2.使用static来定义静态方法,通过接口名就可以调用

接口的子类依然是多继承的关系,而抽象类却是单继承。

package num.com;

interface IMessage{
    public default void Print(){
        System.out.println("Print");
    }
    public static  IMessage getInstance(){
        return new Message();
    }
    public void print();
}

class Message implements IMessage{
    public void print(){
        System.out.println("Hello");
    }
}


public class TestDemo5 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        IMessage ms=IMessage.getInstance();
        ms.print();
        ms.Print();

    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
sky_fengbiubiu · 2017-06-24 · 接口定义加强 0

压制警告:@SuppressWarning

[展开全文]
sky_fengbiubiu · 2017-06-24 · Annotation(压制警告) 0

声明过期处理:@Deprecated

这种过期的处理操作往往出现在一些平台支持的工具上,例如JDK,会不建议用户继续使用了

[展开全文]
sky_fengbiubiu · 2017-06-24 · Annotation(过期声明) 0

方法覆写:被覆写的方法不能够拥有比父类更加严格的访问控制权限

@Override在你覆写语法错误时将会提示

[展开全文]
sky_fengbiubiu · 2017-06-24 · Annotation(准确覆写) 0

1.在软件项目开发过程之中,会将所有使用到的第三方的信息或是程序有关的操作都写在程序里;

如果其中信息发生更改,所要更改的信息量就太大了

2.设置配置文件,程序在运行的时候要通过配置文件读取相关的配置操作

除此之外,配置文件还可能保存一些程序项的内容。

但是改配置文件并不方便

一旦进行修改的时候那么配置文件的数据量的庞大让人晕眩

3.使用注解

使用了注解,但配置文件依然适用,只是少了

[展开全文]
sky_fengbiubiu · 2017-06-24 · Annotation(代码开发逻辑) 0

枚举只有几个指定的对象进行引用

[展开全文]
sky_fengbiubiu · 2017-06-24 · 枚举(枚举应用) 0

可以在枚举里面定义属性,方法甚至接口

枚举实现接口,这样枚举中的每个对象就变成了接口对象

  

[展开全文]
sky_fengbiubiu · 2017-06-24 · 枚举(枚举中定义其它结构) 0

构造方法:protected Enum(String name, int ordinal);

取得枚举名字: public final String name();

取得枚举序号:public final int ordinal();

values()可以取得所有的枚举数据:返回枚举数组

 

enum和Enumd的区别:

enum 是一个关键字,使用enum定义的枚举类本质上就是一个类继承了Enum这个抽象类

[展开全文]
sky_fengbiubiu · 2017-06-24 · 枚举(Enum类) 0

线程的优先级:在Thread里面有优先级的方法。

设置优先级和取得优先级。

最高优先级:MAC_PRIORITY   10

中级优先级:NORM_PRIORITY   5

最低优先级:MIN_PRIORITY     1

 

[展开全文]

线程休眠:指的是让我们的线程暂缓一下,等到了预计时间再回复执行。

方法:sleep()用毫秒做单位。

真正进入方法的对象可能有多个,也可能是一个,所以所有的进入代码的顺序可能有差异,延迟可能有差异,但是总体的执行是并发执行。

[展开全文]

多线程的操作方法:

线程的命名和取得:多线程的运行状态是不确定的,所以必须有一个可以明确标识出我们线程对象的信息,一般用名称来描述。

1.构造:创建线程的时候设置好名字

2.setName:final不允许子类覆写

3.getName:取得线程名字

必须取得线程对象:所有的操作都在run()方法,取得当前线程对象:currentThread().

JVM是一个进程,所有的主方法只是一个线程,由主线程创造所有的子线程。

[展开全文]

Runnable中的run()方法虽然也是线程的主方法,但是很多时候需要一些返回值,这是需要Callable

[展开全文]

死锁是由线程竞争资源引起的。

[展开全文]

授课教师

阿里云开发者社区全面升级
一站式体验,助力云上开发!
进入新社区

相关课程

查看更多 >

本课程相关云产品