线程

进程与线程总结:
 1, 某个类,想具备多线程操作功能
     (1) 继承Thread,则调用start()运行线程
     (2) 实现Runnable,则先构造Thread类实例,再调用start()方法
   
 2, 线程实例.run() 与    线程实例.start()  的区别:
           直接调用run(),顺序执行
           调用start(),本质上还是调用run(),并发执行
      通过调用start()来启动线程
       
 3, 使用 Thread类  与  Runnable接口 的接口     (最好使用Runnable接口)
         使用Thread,不能实现资源共享
         使用Runnable,可进行资源共享
 
 4, Thread类 其实 就是Runnable 接口的子类
 
 5, 线程的状态:
   创建状态   : 线程已实例化  (等待CPU调度)
   就绪状态   : 调用了start(), 等待CPU调度
   运行状态   : 执行run()    (遇到导致阻塞的事件,则进入阻塞状态)
   阻塞状态   : 暂时停止执行,可能将资源交给其他线程使用   (阻塞解除后,回到就绪状态,等待CPU调度)
   终止状态   : 线程执行完毕(即死亡状态)
   
  
 6, Thread的基本知识点
    a,常见的方法:
        currentThread()  :当前线程
        isAlive()        :判断线程是否启动
        join             :让一个线程强制运行,该线程运行期间,其他线程无法运行   
    sleep()          :让线程暂时的休眠
    yield()          :将一个线程的操作,暂时让给其他线程来执行(线程礼让)
    interrupt()      :线程中断
    setDaemon(on)    :让线程在后台运行
    b,如果程序没有为线程命名,则系统会自动为线程命名:thread-0,thread-1...
    c,线程实例.run(),则当前线程的名称为:main  ,即:主方法也是一个线程——主线程
    d,每当java程序执行时,就会启动一个JVM,每一个JVM实际上就是在操作系统中启动了一个进程。
      java运行时至少启动两个线程:main,GC(垃圾回收机制)
  e,3种优先级:MAX_PRIORITY(10)、NORM_PRIORITY(5)、MIN_PRIORITY(1) 。
     优先级越高,越容易先被执行。
    主方法的优先级为:NORM_PRIORITY
    
7,  线程的休眠操作


8,  同步与死锁
         死锁:表示互相等待,是在程序运行过程中一种表现状态
         注:资源共享时需要进行同步操作
               程序中过多的同步可能会产生死锁
    
    
10,线程的生命周期
   创建: 通过 new Thread() 创建线程实例
   运行: 调用start(),进入运行状态(在运行状态可以通过yeild()进行礼让后,继续执行)
   暂停: 调用sleep()或wait()
   销毁: 通过设置标志位boolean,结束线程    (run方法执行完毕,也表示结束线程)
   
   注:
   suspend():暂时挂起线程
   resume():恢复挂起的线程
    stop():停止线程
    均已过时,不推荐使用。这些方法都会产生死锁
基于模拟退火的计算器 在线运行 访问run.bcjh.xyz。 先展示下效果 https://pan.quark.cn/s/cc95c98c3760 参见此仓库。 使用方法(本地安装包) 前往Releases · hjenryin/BCJH-Metropolis下载最新 ,解压后输入游戏内校验码即可使用。 配置厨具 已在2.0.0弃用。 直接使用白菜菊花代码,保留高级厨具,新手池厨具可变。 更改迭代次数 如有需要,可以更改 中39行的数字来设置迭代次数。 本地编译 如果在windows平台,需要使用MSBuild编译,并将 改为ANSI编码。 如有条件,强烈建议这种本地运行(运行可加速、可多次重复)。 在 下运行 ,是游戏中的白菜菊花校验码。 编译、运行: - 在根目录新建 文件夹并 至build - - 使用 (linux) 或 (windows) 运行。 最后在命令行就可以得到输出结果了! (注意顺序)(得到厨师-技法,表示对应新手池厨具) 注:linux下不支持多任务选择 云端编译已在2.0.0弃用。 局限性 已知的问题: - 无法得到最优解! 只能得到一个比较好的解,有助于开阔思路。 - 无法选择菜品数量(默认拉满)。 可能有一定门槛。 (这可能有助于防止这类辅助工具的滥用导致分数膨胀? )(你问我为什么不用其他语言写? python一个晚上就写好了,结果因为有涉及json读写很多类型没法推断,jit用不了,算这个太慢了,所以就用c++写了) 工作原理 采用两层模拟退火来最大化总能量。 第一层为三个厨师,其能量用第二层模拟退火来估计。 也就是说,这套方法理论上也能算厨神(只要能够在非常快的时间内,算出一个厨神面板的得分),但是加上厨神的食材限制工作量有点大……以后再说吧。 (...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值