进程的并发和并行
并发:相当于先和甲发消息,再和乙发消息,再和甲聊天,再和乙聊天
并行:同时和甲乙聊天,(两个任务同时进行,需要多核CPU)
多线程的实现方式
1.继承thread类->重写run方法->创建thread子类对象->start方法启动线程
2.定义一个类实现Runnable接口->重写run方法->创建子类对象->使用new Thread(对象).start();(通过thread)来启动线程
runnable里面有thread构造方法
两种线程方式实现的区别:
第一种:继承thread,由于子类重写了thread里的run方法,调用start时直接找子类的run方法
好处:可以直接使用thread类中的方法
弊端:已经有了父类就不能用这种方法(因为类只能单继承)
第二种:实现runnable,构造函数中传入了润南乐而的引用,成员变量记住了它,start调用run时判断runnable的引用是否为空,不为空编译时看的是runnable的run,运行时执行的是子类的run方法
好处:有了父类也能实现接口
弊端:不能直接使用thread中的方法
匿名内部类实现多线程的两种方式