发表于: 2017-04-18 02:25:14
2 1309
今天完成的事情:修复威威化运PC端"失效订单"模糊搜索功能;学习多线程;
明天的计划:解决注册用户一天只能发三次短信的功能.
遇到的问题:
这个模糊搜索接口,文档不清晰,联查三个表,字段比较杂,要把SQL语句放到Navicat里一个一个的试,加上说今天PC端demo所有心里很急,没有静下心.最后还是找到的破绽解决问题,但是还有隐患,明天解决APP端短信问题后,需要再看一看;
收获:
进程和线程的区别:
1.进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)
2.线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈,线程切换开销小。(线程是cpu调度的最小单位)
3.线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。
4.多进程是指操作系统能同时运行多个任务(程序)。
5.多线程是指在同一程序中有多个顺序流在执行。
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。
class Thread1 extends Thread
run()方法是多线程程序的一个约定。所有的多线程代码都在run方法里面。Thread类实际上也是实现了Runnable接口的类。
在启动的多线程的时候,需要先通过Thread类的构造方法Thread(Runnable target) 构造出对象,然后调用Thread对象的start()方法来运行多线程代码。
Thread和Runnable的区别
如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。
实现Runnable接口比继承Thread类所具有的优势:
1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立
main方法其实也是一个线程。在java中所以的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。(我要抢CPU);
线程转换
线程调度:
调整线程优先级:Java线程有优先级,优先级高的线程会获得较多的运行机会。
JVM提供了10个线程优先级,但与常见的操作系统都不能很好的映射。如果希望程序能移植到各个操作系统中,应该仅仅使用Thread类有以下三个静态常量作为优先级,这样能保证同样的优先级采用了同样的调度方式。
评论