当前位置: 首页 > news >正文

做推广自己找网站电商模式有哪几种

做推广自己找网站,电商模式有哪几种,网站模板破解版,西安大型网站建设公司专栏#xff1a;JavaEE初阶起飞计划 个人主页#xff1a;手握风云 目录 一、认识线程 1.1. 概念 1.2. 为什么要使用线程 1.3. 进程和线程的关系 1.4. 多线程模型 二、多线程的创建 2.1. 继承Thread类 2.2. 实现Runnable接口 2.3. 匿名内部类 2.4. lambda表达式 一、… 专栏JavaEE初阶起飞计划 个人主页手握风云 目录 一、认识线程 1.1. 概念 1.2. 为什么要使用线程 1.3. 进程和线程的关系 1.4. 多线程模型 二、多线程的创建 2.1. 继承Thread类 2.2. 实现Runnable接口 2.3. 匿名内部类 2.4. lambda表达式 一、认识线程 1.1. 概念 进程是操作系统进行资源分配和调度的基本单位。简单来说进程就是程序的一次执行过程。通过进程用户可以同时运行多个应用程序提高计算机的利用率和用户体验。同时进程间的隔离性也增强了系统的稳定性和安全性一个进程的崩溃通常不会影响到其他进程。 1.2. 为什么要使用线程 进程虽然说可以实现并发编程的效果比如写一个服务器来同时处理多个进程可以进程级别太高创建或者销毁进程的开销很大。为了优化这些问题于是引入了线程。 1.3. 进程和线程的关系 进程包含线程线程也可以被称为轻量级进程。每个线程都可以独立执行一段逻辑并且独立在CPU上调度同一个进程中的多个线程共享进程的资源如内存资源、文件描述符表等。当进程已经有了在进程内部在创建新线程就把申请资源开销省下来了。 1.4. 多线程模型 我们假设有一个滑稽老铁去吃100只烧鸡花费的时间肯定会太长。按照多进程模型让两个滑稽老铁一人分别吃50只虽然效率提升了但我们需要额外申请内存空间。 但我们如果按照多线程的模型来让两个滑稽老铁在同一个桌子上来分别吃50只烧鸡省下了申请资源的开销效率就会进一步提高。 但线程并不是越多效率就越高。当滑稽老铁的数目进一步增多但桌子就这么大有可能其中一人吃得好好的会被其他人挤走。此时非但不会提高效率效率反而越低了那此时就只能对机器进行性能优化。 当线程数目比较少时也会出现一些问题 当两个线程尝试操作一个共享的资源时比如内存中的同一个变量就可能会发生冲突从而引起bug。如果某个线程抛出异常且没有其他代码把这个异常catch住就会导致进程内的所有线程会被随之带走整个进程也会结束。 二、多线程的创建 多线程编程和多进程编程都是操作系统提供的API因为Java是一次编译到处运行的JVM已经把系统差异给屏蔽了JVM已经把多线程的API进行了较好地封装但多进程的API封装得比较粗糙。下面就通过代码来感受一下Java中如何使用多线程。 2.1. 继承Thread类 public class Demo1 { // 定义一个静态内部类MyThread继承自Thread类static class MyThread extends Thread {// 重写run方法Overridepublic void run() {System.out.println(hello thread);}}public static void main(String[] args) {// 创建一个MyThread对象Thread thread new MyThread();// 启动线程thread.start();} } Thread类是Java中的核心类用于表示和管理线程。由于操作系统本身就提供了一组操作线程的函数但这个函数是C语言版本的。JVM把这些操作系统的函数给封装成了Java版本到了程序员手中就成了Thread。使用Thread类就相当于在使用操作系统的API。run方法是线程执行体包含了线程需要执行的任务代码。当线程启动时run方法中的代码将在新的线程中执行也就是多线程程序的入口。 在MyThread类里面重写的是run()方法但在main()方法里调用的却是start()方法这是因为start()方法是调用系统API真正在操作系统内部创建一个线程这个新的线程就会以run()作为入口执行里面的逻辑而run()方法就不需要在代码中显式调用。 但如果我们调用run()方法虽然也能打印hello thread但没有创建新的线程而是直接在main()方法所在的 “主线程” 里执行了run()方法的逻辑。对于一个进程至少得有一个线程对于一个Java程序来说main()方法所在的进程至少会有这个线程这个线程就是主线程。上面的代码就具有一个主线程和一个新创建的线程。 sleep静态方法 Thread.sleep是Thread类中的一个静态方法。当调用这个方法时当前线程会被阻塞不执行任何操作直到指定的毫秒数过去。这个方法可以用于多种场景比如在循环中添加延迟或者在执行某些操作之前等待一段时间。 public class MyThread extends Thread {Overridepublic void run() {System.out.println(Hello Thread!);} } public class Demo2 {public static void main(String[] args) {// 创建一个MyThread对象Thread thread new MyThread();// 启动线程thread.start();while (true) {System.out.println(Hello Main!);// 休眠1000秒Thread.sleep(1000);}} } 但此时的代码会显示出错误原因是我们有受查的异常必须进行显式处理可以用throws抛出或者try{}catch{}进行捕获。 //throws public class Demo2 {public static void main(String[] args) throws InterruptedException {// 创建一个MyThread对象Thread thread new MyThread();// 启动线程thread.start();while (true) {System.out.println(Hello Main!);// 休眠1000秒Thread.sleep(1000);}} }//try{}catch{} public class Demo2 {public static void main(String[] args) {// 创建一个MyThread对象Thread thread new MyThread();// 启动线程thread.start();while (true) {System.out.println(Hello Main!);// 休眠1000秒try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}} } 同理我们在MyTread类里面进行循环打印。但这里只能使用try{}catch{}进行捕获因为run()方法是重写自父类的方法如果使用throws抛出不符合父类方法的声明。 完整代码实现 public class MyThread extends Thread {Overridepublic void run() {while (true) {System.out.println(Hello Thread!);try {// 休眠1秒Thread.sleep(1000);} catch (InterruptedException e) {// 抛出运行时异常throw new RuntimeException(e);}}} } public class Demo2 {public static void main(String[] args) throws InterruptedException {// 创建一个MyThread对象Thread thread new MyThread();// 启动线程thread.start();while (true) {System.out.println(Hello Main!);// 休眠1000秒Thread.sleep(1000);}} } 运行结果如下虽然两个打印分别在不同的while循环中两个线程属于并发关系独立在CPU上执行。我们同时也可以看到两个线程不是严格交替执行的由于两个线程都加了休眠当1000毫秒到后哪个线程线程的执行顺序是无法确定的这是因为操作系统调度的线程是随机不可预测的。 我们还有更直观的办法来观察多线程在我们安装的JDK里面的bin目录下以管理员身份运行jconsole.exe然后点击连接本地进程Demo2然后点击线程就可以看到我们的Thread-0和main两个线程剩下的线程都是JVM自带的这些线程进行了一些背后的操作比如垃圾回收、记录统计信息、记录一些调试信息等。 2.2. 实现Runnable接口 public class Demo3 {public static void main(String[] args) throws InterruptedException {// 创建一个实现了Runnable接口的实例Runnable myRunnable new MyRunnable();// Runnable本身没有start方法需要配合Thread类来使用// 创建一个Thread对象并将myRunnable作为参数传入Thread thread new Thread(myRunnable);// 启动线程thread.start();while (true) {System.out.println(Hello Main!);Thread.sleep(1000);}} }class MyRunnable implements Runnable {Overridepublic void run() {while (true) {System.out.println(Hello Tread!);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}} } 运行结果 对于第一种继承Thread写法描述任务的时候代码是写到Thread子类中的意味着任务内容与Thread类耦合度高未来想把这个任务给别的主体来执行。 对于第二种Runnable接口写法任务是写到Runnable中不涉及到任何和“线程”的概念任务内容和Thread耦合度几乎没有后序可以把这个任务交给进程或者协程来执行。 2.3. 匿名内部类 public class Demo4 {public static void main(String[] args) {// 创建一个新的线程Thread thread new Thread() {Overridepublic void run() {while (true) {System.out.println(Hello Tread!);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}};// 启动线程thread.start();while (true) {// 在主线程中输出Hello Main!System.out.println(Hello Main!);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}} } 此处创建了没有的名字匿名内部类并且这个类是Thread类的子类该子类也重写了run()方法也创建了子类实例通过thread引用指向子类。这样写可以简化代码。 运行结果如下 2.4. lambda表达式 public class Demo5 {public static void main(String[] args) {// 创建一个新的线程Thread thread new Thread(() - {while (true) {System.out.println(Hello Thread!);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});// 启动线程thread.start();// 无限循环while (true) {System.out.println(Hello Main!);try {// 主线程休眠1秒Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}} } 运行结果如下
http://www.zqtcl.cn/news/420443/

相关文章:

  • 谷歌网站收录提交金山网站建设关键词排名
  • 域名备案中网站可以开通个人网站开发多少钱
  • 西安维护网站广州公司网站设计制作
  • 荆门做网站网络推广公司多久能回本
  • 搜索网站存在的关键字室内设计公司排名榜
  • 响应式网页开发昆明网站排名优化公司哪家好
  • 如东建设局网站线上购物平台
  • 重庆网站推广营销淘宝的网站怎么做的好
  • 重庆企业建站模板珠海企业官网设计制作
  • 网页作图软件东莞优化哪家好
  • 专业的商城网站开发深圳网站界面设计
  • 做网站需要自备服务器吗专业生产车间设计图纸网站
  • 用vs2010做网站教程昆明模板建站定制网站
  • dedecms网站模板下载做网站价格需要多少钱
  • 昆明餐饮网站建设建电影网站教程
  • 怎么做服装网站wordpress 主题 三栏
  • 个人可否建立网站全包装修
  • 哈尔滨网站建设贴吧网站建设推广好做吗
  • 南宁网站建设排名制作网站的公司做网站去哪里找
  • 网站开发外贸材料信息价查询网站
  • 推荐几个好的seo网站程序模板WordPress博客建站系统
  • 手机网站建设推广方案ppt模板wordpress文章阅读统计
  • 自己可以接单做网站吗建设项目所在地公共媒体网站
  • 哈尔滨网站制作哪儿好薇学校网站首页代码html
  • 网站建设与设计 毕业设计企业自助网站建设
  • ip库网站源码佛山网站开发公司
  • 婚庆网站怎么设计模板电子商务系统规划方案
  • 东莞中企动力做网站wordpress结合tornado
  • 用织梦做手机移动版网站邯郸网站建设品牌加盟
  • 网站做简历模板动漫设计专业就业方向