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

网站网业设计wordpress 很差

网站网业设计,wordpress 很差,仙桃网站定制,免费软件下载网站哪个好Java线程 文章目录 Java线程一、线程创建二、线程运行三、线程运行四、主线程和守护线程五、线程的五种状态六、线程的六种状态七、烧水泡茶案例 一、线程创建 创建线程方法一#xff1a; Thread重写run方法 Slf4j(topic c.MyTest1) public class MyTest1 {publ…Java线程 文章目录 Java线程一、线程创建二、线程运行三、线程运行四、主线程和守护线程五、线程的五种状态六、线程的六种状态七、烧水泡茶案例 一、线程创建 创建线程方法一 Thread重写run方法 Slf4j(topic c.MyTest1) public class MyTest1 {public static void main(String[] args) {Thread tnew Thread(){Overridepublic void run() {log.info(好人);}};t.setName(线程1);t.start();log.info(main测试);} }创建方法2: 直接写一个Runable传给线程Thread Slf4j(topic c.Test2) public class Test2 {public static void main(String[] args) {Runnable r () - {log.debug(running);};Thread t new Thread(r, t2);t.start();} }Thread和Runable的区别 Thread实现了Runable方法也就是说Thread可以覆盖Runable的任务方法执行run。但是也可以通过传入任务来执行对应的Runable方法(如下面代码所示)。 Overridepublic void run() {if (target ! null) {target.run();} } 创建方法3: FutureTask实现了Runnable和FutureFuture主要是用来返回值的。其实相当于也是一个任务类但是需要实现Callable实现类对象传入到task上。并且执行之后才能够使用task的get来获取数据如果没有执行线程那么get就会阻塞 Slf4j(topic c.MyTest2) public class MyTest2 {public static void main(String[] args) throws ExecutionException, InterruptedException {FutureTaskInteger tasknew FutureTaskInteger(new CallableInteger() {Overridepublic Integer call() throws Exception {log.debug(你好);return 4;}});Thread tnew Thread(task,t1);t.start();log.debug({},task.get());} }总结:更推荐方法2原因是Runable就是任务把任务和线程分开才能更好的分配任务。 二、线程运行 命令 jps:查看java进程 tasklist:windos查看所有进程 taskkill /F /PID XXX杀死某个进程 三、线程运行 线程的栈 每次开启一个线程都会产生一个线程的栈给线程使用实际上就是一开始分配的虚拟机栈。 每个栈都有多个栈帧 线程只能有一个活动栈帧 线程执行的过程 先分配栈给线程线程调用main方法在栈分配一个栈帧给main方法栈帧保存锁记录、局部变量表、操作数栈、返回地址返回到原来的栈帧方法的下一条指令 线程上下文切换 导致上下文切换的条件 时间片用完 优先级 垃圾回收 自己调用sleep、wait等 线程的状态包括 程序计数器记录执行到什么位置 虚拟机栈包括所有栈帧信息 常见方法 start 线程进入就绪状态等待调度器调用。这里相当于是开启了一个新的线程 run 执行Runnable里面的方法。这里并没有开启线程只是通过本线程执行代码 如果开启了两次start就会出现线程状态异常的问题IlegalThreadStateException 线程的两个状态 NEW start之后就是Runnable等待调度 sleep 线程睡眠并把状态改为Timed Waiting被打断的时候会抛出异常InterruptedException。可以通过TimeUnit.SECONDS.sleep来规定睡眠时间的单位。睡眠可以使用在while循环自转的地方如果长时间自转就会消耗CPU的使用时间其他线程无法使用 interrupt 唤醒线程如果线程处于睡眠状态那么就会抛出异常 public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(t1) {Overridepublic void run() {log.debug(enter sleep...);try {Thread.sleep(2000);} catch (InterruptedException e) {log.debug(wake up...);e.printStackTrace();}}};t1.start();Thread.sleep(1000);log.debug(interrupt...);t1.interrupt();}yield 其实就是把线程状态从Running转变到Runnable暂时让出cpu重新去竞争 setPriority 设置优先级是给调度器进行提示先执行这个线程但是仍然没有办法控制线程。 join join实际上就是卡点就是一定要等待调用join的线程完成后才能执行下面的代码 Slf4j(topic c.Test10) public class Test10 {static int r 0;public static void main(String[] args) throws InterruptedException {test1();}private static void test1() throws InterruptedException {log.debug(开始);Thread t1 new Thread(() - {log.debug(开始);sleep(1);log.debug(结束);r 10;},t1);t1.start();t1.join();log.debug(结果为:{}, r);log.debug(结束);} }同步应用案例 多线程的join只需要等待最长的那个线程就可以了因为它们是并行执行的。 test3案例实际上就是限时等待如果超过时间那么就不等了。如果没有超过时间那么结束join还是以处理完线程的任务时间为主而不是最大的等待时间 Slf4j(topic c.TestJoin) public class TestJoin {static int r 0;static int r1 0;static int r2 0;public static void main(String[] args) throws InterruptedException {test2();}public static void test3() throws InterruptedException {Thread t1 new Thread(() - {sleep(2);r1 10;});long start System.currentTimeMillis();t1.start();// 线程执行结束会导致 join 结束log.debug(join begin);t1.join(3000);long end System.currentTimeMillis();log.debug(r1: {} r2: {} cost: {}, r1, r2, end - start);}private static void test2() throws InterruptedException {Thread t1 new Thread(() - {sleep(1);r1 10;});Thread t2 new Thread(() - {sleep(2);r2 20;});t1.start();t2.start();long start System.currentTimeMillis();log.debug(join begin);t1.join();log.debug(t1 join end);t2.join();log.debug(t2 join end);long end System.currentTimeMillis();log.debug(r1: {} r2: {} cost: {}, r1, r2, end - start);}private static void test1() throws InterruptedException {log.debug(开始);Thread t1 new Thread(() - {log.debug(开始);sleep(1);log.debug(结束);r 10;});t1.start();t1.join();log.debug(结果为:{}, r);log.debug(结束);} }interrupt 打断阻塞 打断sleep和wait。打断后会抛出异常到那时不会给它打上打断标记。而且这里需要给主线程睡眠一会不然t1线程还没睡眠主线程就已经调用打断那么这个时候的打断是打断t1并且加上打断标记但是打断睡眠并不会有打断标记 Slf4j(topic c.Test11) public class Test11 {public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() - {log.debug(sleep...);try {Thread.sleep(5000); // wait, join} catch (InterruptedException e) {e.printStackTrace();}},t1);t1.start();Thread.sleep(1000);log.debug(interrupt);t1.interrupt();log.debug(打断标记:{}, t1.isInterrupted());} }打断正常 当我们打断的事正常的线程没在sleep或wait那么就会给这个线程加上打断标记。但是要不要打断取决于被打断线程的意愿其它线程只能给一个通知。 Slf4j(topic c.Test12) public class Test12 {public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() - {while(true) {boolean interrupted Thread.currentThread().isInterrupted();if(interrupted){break;}}}, t1);t1.start();Thread.sleep(1000);log.debug(interrupt);t1.interrupt();} }LockSupport 其实就是一个锁的支持类它的park方法可以模拟sleep把线程进行阻塞但是需要标记是false的时候。如果打断标记是true那么就无法使用。但是这个地方可以使用Thread.interrupted来获取打断标记状态和消除标记。 public static void test5() {Thread t1 new Thread(()-{log.debug(park...);LockSupport.park();log.debug(unpark...);log.debug(打断状态{}, Thread.interrupted());LockSupport.park();log.debug(unpark...);},t1);t1.start();try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}t1.interrupt();}四、主线程和守护线程 守护线程其实就是Daemon。也就是在其它非守护线程运行完之后无论守护线程是否还有任务需要执行都会强制停止。 垃圾回收器是守护线程 tomcat的Acceptor和poller Slf4j(topic c.Test15) public class Test15 {public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() - {while (true) {if (Thread.currentThread().isInterrupted()) {break;}}log.debug(结束);}, t1);t1.setDaemon(true);t1.start();Thread.sleep(1000);log.debug(结束);} }五、线程的五种状态 1、初始new线程的时候 2、可运行执行了start 3、运行线程可以使用cpu的时候 4、阻塞不能被cpu调度器使用的时候 5、终止线程结束的时候 六、线程的六种状态 NEW:初始化 RUNNABLE:包括了运行、可运行和阻塞通常表示正在运行 WAITING没有时间限制的等待 TIMED_WAITING:有时间限制的等待 BLOCKED:阻塞 TERMINATED:终止 七、烧水泡茶案例 join思路 其实就是老王洗烧壶和烧水小王洗茶壶、茶杯、茶叶等待烧水完成之后泡茶。可以用join来等待t1处理。 Slf4j(topic c.Test16) public class Test16 {public static void main(String[] args) {Thread t1 new Thread(() - {log.debug(洗茶壶);Sleeper.sleep(1);log.debug(烧水);Sleeper.sleep(5);}, 老王);Thread t2new Thread(()-{log.debug(洗茶壶);Sleeper.sleep(1);log.debug(洗茶叶);Sleeper.sleep(2);log.debug(洗茶杯);Sleeper.sleep(1);try {t1.join();} catch (InterruptedException e) {e.printStackTrace();}log.debug(泡茶);},小王);t1.start();t2.start();} }
http://www.w-s-a.com/news/954315/

相关文章:

  • 网站开发软件著作权归谁网站悬浮窗广告
  • 如何提升网站alexa排名货运网站源码
  • 如何看自己网站流量梧州网站设计理念
  • 商城网站建设特点有哪些信息门户
  • 弄一个网站临沂有哪几家做网站的
  • 广州个人网站制作公司网站建设公司价
  • 免费建设网站赚钱小程序开发文档pdf
  • ucenter 整合两个数据库网站网店推广技巧
  • 网站优化排名提升百度wap
  • 八里河风景区网站建设内容摘要网站开发基础学习
  • 上海做外贸网站的公司智慧团建网站登陆平台
  • 上海商务网站建设如何做的网站手机可以用吗
  • 产品推广营销方案seo推广员招聘
  • 做水利网站需要多少钱山东市网站建设
  • 做网站找哪里如何修改wordpress颜色
  • 招商加盟网站系统站长工具 seo查询
  • 工商局网站清算组备案怎么做电商培训机构
  • 做好门户网站建设做本地团购网站怎么样
  • wordpress主题和预览不同20条优化防疫措施方案
  • 艾奇视觉网站建设网站推广需要几个人做
  • 2008 iis 添加网站wordpress固定链接标签加上页面
  • 宁波企业网站制作推荐网站优化人员
  • 大型资讯门户网站怎么做排名沈阳建设工程有限公司
  • 开发中英文切换网站如何做江苏网站建设费用
  • 网站论文首页布局技巧桥东网站建设
  • 网站开发项目经理工资北京微信网站
  • 山西山西省建设厅网站微信备份如何转换为wordpress
  • 同城网站开发实用网站模板
  • 郑州做网站哪家公司好国外购买空间的网站有哪些
  • 资讯cms网站有那些餐饮品牌策划设计公司