为了账号安全,请及时绑定邮箱和手机立即绑定

线程。。。。。。。。。。。。。。。。。

标签:
Java

ExecutorService线程池

网络延迟和随机性造成负票 :
卖了相同票(cpu的原子性):
解决:
是否有多线程环境
是否有共享数据
是否有多条语句同事操作共享数据
只能改变第三种情况解决问题
线程同步互斥:耗费资源 死锁=====不满足就wait 然后让别人去做
生产消费者问题 在同步的基础上 加同一把锁 都要加锁 等待唤醒机制 条件不满足时就wait(),然后告诉别的可以notify(),notifyAll()
private Object obj=new Object();
synchronized (对象 必须是统一个对象 所以必须在外部创建) {
同步的代码块 就是多条语句同事操作共享数据的代码
里面的代码最好都是while
while(1<2)
{
obj.wait
}
obj.notify();
}
线程互斥
单线程: 以前我写过的所有代码都是单线程 因为只有一条执行路径
多线程:几个方法一起执行 多条路径
线程:在一个运行的程序中又有多个任务在进行 例如扫雷:我在点 它在在计时
高并发:在一个时间点 上 很多人访问
第一种实现:
Thread
//重写run方法 类里面的所有代码只有需要被线程执行的放在run方法
@Override
public void run() {
//被线程执行的代码 一定要在任务中属于比较耗时的
for(int i=0;i<1000;i++)
{
System.out.println(i);
}
}
public static void main(String[] args) {
//创建两个线程对象
Demo1 d1=new Demo1();
Demo1 d2=new Demo1();
//d.run() 如果直接调 是单线程的 跟普通方法没区别
/*

  • run仅仅封装线程执行代码
  • 开启线程是start,jvm方法会调run
    */
    d1.start();
    d2.start();
    //输出结果 说明多线程有随记性
    }

java采用的是优先级高分配算法 如果优先级相同 随机选择
System.out.println(d1.getPriority());//线程默认优先级是5 最大是10 最小是1
d1.setPriority(MAX_PRIORITY);//设置优先级高并不代表就没有随记性了 只有在次数特别多才有效果
Runable是个接口 使用的唯一区别就是把这个实例当做参数传给Thread
Runable可以解决单继承问题 所以大部分采用该方式

线程休眠
sleep()
线程加入
join();//在start()之后使用 必须在我 执行完毕之后你们才执行
礼让线程
yield()//只能在一定程度上 使线程在一定程度上持平执行 但是还是有随机性
守护线程
d1.setDaemon(true);//必须在start之前调用 就相当于塔克大战 王死 了 都死了 而那些小鬼就可以作为守护进程 因为只有守护进程的时候 虚拟机退出
关闭/中断线程
stop()// 过时不用
interpt()//用 但是也是利用它的 方法做flag
最正确的办法是立flag
生命周期

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消