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

手机网站制作推广什么关键词可以搜到那种

手机网站制作推广,什么关键词可以搜到那种,清江开发公司官网,国外网站设计案例目录 一、java多线程的三种实现方式 1.1 多线程的第一种实现方式#xff1a;继承Thread类 1.2 多线程的第二种实现方式#xff1a;Runnable接口 1.3 多线程的第三种实现方式#xff1a;Callable接口和Future接口 1.3 多线程三种实现方式的对比 二、线程常用的成员方…目录 一、java多线程的三种实现方式 1.1  多线程的第一种实现方式继承Thread类 1.2  多线程的第二种实现方式Runnable接口 1.3 多线程的第三种实现方式Callable接口和Future接口 1.3  多线程三种实现方式的对比 二、线程常用的成员方法 2.1  设置/获取线程name、sleep线程 2.2 线程优先级 2.3 守护线程备胎线程 三、线程安全问题 3.1 同步代码块 3.2 同步方法 3.3 lock锁 四、死锁 五、生产者消费者模型等待唤醒机制 六、线程池 6.1 实现方法 6.2 自定义线程池 在之前已经学习了C的多线程编程现在一起来看一下java是怎么实现的吧 Linux之多线程概念线程控制_linux 线程执行到某一函数时,强制另一个线程启动-CSDN博客 一、java多线程的三种实现方式 继承Thread类的方式进行实现实现Runnable接口的方式进行实现利用Callable接口和Future接口的方式进行实现 1.1  多线程的第一种实现方式继承Thread类 1.2  多线程的第二种实现方式Runnable接口 多线程第二种实现方式 自己手动定义一个类去实现Runnable接口。 重写里面的run方法。创建自己的类的对象。 创建一个Thread类的对象并开启线程。 1.3 多线程的第三种实现方式Callable接口和Future接口 线程第三种实现方式 创建一个类MyCallable实现Callable接口。重写里面的call方法。( 返回值表示多线程运行结果 )创建MyCallable的对象。( 表示多线程要执行的任务 )创建FutureTask的对象。( 作用管理多线程运行的结果 )创建Thread类的对象,并启动线程。( 表示线程 )  特点 可以获取到多线程运行的结果。 1.3  多线程三种实现方式的对比 优点缺点继承Thread类变成比较简单可以直接使用Thread类中的方法可以扩展性较差不能再继承其他的类实现Runnable扩展性强实现该接口的同时还可以继承其他的类编程相对复杂不能直接使用Thread类中的方法实现Callable接口 二、线程常用的成员方法 方法名称说明String getName ( )返回此线程的名称void setName ( String name )设置线程的名字构造方法也可以设置名字)static Thread currentThread ( )获取当前线程的对象static void sleep ( long time )让线程休眠指定的时间单位为毫秒setPriority (int newPriority )设置线程的优先级final int getPriority ( )获取线程的优先级final void setDaemon ( boolean on )设置为守护线程public static void yield ( )出让线程 / 礼让线程public static void join ( )插入线程 / 插队线程 2.1  设置/获取线程name、sleep线程 public class ThreadDeom {public static void main(String[] args) throws InterruptedException {MyThread mt1 new MyThread();MyThread mt2 new MyThread();//在不给线程设置名字的时候线程也是有默认的名字的//System.out.println(mt1.getName());mt1.setName(火车);mt2.setName(飞机);//mt1.start();//mt2.start();//获取的就是main线程的名字System.out.println(Thread.currentThread().getName());System.out.println(hhhhhhhhhhhhhh);Thread.sleep(1000);//按Alt Enter直接选择抛出异常System.out.println(hhhhhhhhhhhhhh);} } 2.2 线程优先级 抢占式调度CPU执行每一条的线程的时机和执行时间都是不确定的。非抢占式调度所有的线程轮流进行执行时间是差不多的。 System.out.println(mt1.getPriority());System.out.println(mt2.getPriority());mt1.setPriority(10);mt2.setPriority(1); 2.3 守护线程备胎线程 final void setDaemon ( boolean on ) 三、线程安全问题 Java的线程不安全和C的是一样的都是因为多个线程同时访问同一个临界资源 解决办法也是引入锁Java的锁是synchronized synchroize{ } 3.1 同步代码块 3.2 同步方法 就是把synchronized关键字加到方法上 特点1   同步方法是锁住方法里面的所有代码特点2  锁对象不能自己指定。  3.3 lock锁 这个和C的使用方法几乎是一样的 Lock实现提供比使用synchronized方法和语句可以获得更广泛的锁定操作。 Lock中提供了获得锁和释放锁的方法 成员方法说明void lock ( )获得锁void unlock ( )释放锁 Lock是接口不能直接实例化这里采用它的实现类 ReentrantLock 实例化。 构造方法说明ReentrantLock ( )创建一个  ReentrantLock 的实例 四、死锁 java的死锁和C一样的原因 Linux 多线程安全之----死锁问题_linux 多个 mutex 锁住一个资源出现死锁-CSDN博客 五、生产者消费者模型等待唤醒机制 常见方法 成员方法说明void wait ( ) 当前线程等待直到被其他线程唤醒void notify ( )所及唤醒单个线程void notifyAll ( )唤醒所有线程 例子 生产者代码 //Desk.java public class Desk {// 作用 控制生产者和消费者的执行//判断桌子上是否有面条 0没有 1有public static int foodFlag 0;//定义总个数public static int count 10;//锁对象public static Object lock new Object(); }//Foodie.java public class Foodie extends Thread {Overridepublic void run() {// 1.循环while (true) {// 同步代码块synchronized (Desk.lock) {if (Desk.count 0) {break;} else {// 先判断桌子上是否有面条if (Desk.foodFlag 0) {// 没有等待try {Desk.lock.wait(); // 让当前线程与锁进行绑定} catch (InterruptedException e) {e.printStackTrace();}} else {// 把吃的总数- 1Desk.count--;// 有 开吃System.out.println(吃货在吃面条还能再吃 Desk.count 碗);// 吃完之后唤醒厨师继续做Desk.lock.notifyAll();// 修改桌子的状态Desk.foodFlag 0;}}}}} } 消费者代码 //Desk.java public class Desk {// 作用 控制生产者和消费者的执行//判断桌子上是否有面条 0没有 1有public static int foodFlag 0;//定义总个数public static int count 10;//锁对象public static Object lock new Object(); }//Foodie.java public class Foodie extends Thread {Overridepublic void run() {// 1.循环while (true) {// 同步代码块synchronized (Desk.lock) {if (Desk.count 0) {break;} else {// 先判断桌子上是否有面条if (Desk.foodFlag 0) {// 没有等待try {Desk.lock.wait(); // 让当前线程与锁进行绑定} catch (InterruptedException e) {e.printStackTrace();}} else {// 把吃的总数- 1Desk.count--;// 有 开吃System.out.println(吃货在吃面条还能再吃 Desk.count 碗);// 吃完之后唤醒厨师继续做Desk.lock.notifyAll();// 修改桌子的状态Desk.foodFlag 0;}}}}} } 六、线程池 之前多线程编程的弊端还是挺大的 弊端一用到线程的时候就要创建弊端二用完之后线程消失 因此我们我们引入线程池 线程池其实就是一种多线程处理形式处理过程中可以将任务添加到队列中然后在创建线程后自动启动这些任务。 创建一个池子池子中是空的。提交任务时池子会创建新的线程对象任务执行完毕线程归还给池子下次再次提交任务时不需要创建新的的线程直接复用已有的线程即可。但是如果提交任务时池子中没有空闲线程也无法创建新的线程任务就会排队等待。 6.1 实现方法 Executors线程池的工具类通过调用方法返回不同类型的线程池对象。 方法名称说明public static ExecutorService newCachedThreadPool ( ) 创建一个没有上限的线程池 public static ExecutorService newFixedThreadPool ( int nThreads )创建有上限的线程池 6.2 自定义线程池 核心元素一核心线程的数量不能小于0核心元素二线程池中最大线程的数量最大数量核心线程数量核心元素三空闲时间值不能小于0核心元素四空闲时间单位用TimeUnit指定核心元素五堵塞队列不能为null核心元素六创建线程的方式不能为null核心元素七要执行的任务过多时的解决方案不能为null 不断的提交任务会有以下三个临界点 当核心线程满时再提交任务就会排队。当核心线程满、队列满时再来任务就会创建临时线程核心线程、队列、临时线程都满再来任务会被拒绝 6.3 最大并行数 CPU密集型运算 (读取文件操作比较少) I/O密集型运算 (读取文件操作比较多) 查看最大并行数 public class MyThreadPoolDemo {public static void main(String[] args) {//向Java虚拟机返回可用处理器的数目int count Runtime.getRuntime().availableProcessors();System.out.println(count); //12} }
http://www.pierceye.com/news/864903/

相关文章:

  • 坪山商城网站建设哪家效益快教务管理系统是应用软件吗
  • 深圳网站搭建找谁怎么在手机上制作app
  • 做app和做网站的区别桂林市天气预报15天
  • 高端织梦html5网站模板 dedecms网络公司模板关键词排名优化方法
  • 上海网站建设咨找个网站2021能看到
  • 可以用服务器做网站查询公司信息
  • 个人可以备案企业网站吗旅行社网站 模板
  • 三丰云做网站步骤网站怎么上传ftp
  • 做二手车有哪些网站有哪些手续网站建设单位有哪些方面
  • 建设网站的和服务器常州免费网站制作
  • 电子外贸网站重庆有什么好玩的
  • 商务网站的建设阶段包括郑州的做网站公司哪家好
  • 深圳网站建设网络公司七星彩网投网站建设
  • 手机建网站公司wordpress增加关键字
  • 招聘网站有哪些平台电商网站建设方式
  • 网站的备案要求域名icp备案查询
  • 网站的投资和建设项目站群服务器
  • 建网站电脑版和手机版怎么做网页实训总结及心得体会
  • 网站建设咨询费用一流的网站建设流程图
  • 如何进行营销型企业网站的优化如何在百度上推广自己
  • 360怎么变成建设银行首选网站网站建设财务分析
  • 建设网站的法律可行性分析快手自媒体平台
  • 网站建设的内容规划网站空间 阿里云
  • 网站建设横幅wordpress论坛怎么用
  • 做金融网站违法吗喜迎二十大演讲稿
  • 010-58813333 可信网站做网站的流程是怎么样的
  • 凉山州住房和城乡建设局门户网站南昌seo招聘
  • 恒华大厦做网站公司学校网站制作素材
  • 网站上的动图都怎么做的伊犁州新源县地图高清版
  • 音乐网站设计规划书wordpress爬取文章插件