温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

为什么要让run()方法自动开启

发布时间:2021-12-22 15:23:37 来源:亿速云 阅读:142 作者:iii 栏目:服务器

本篇内容主要讲解“为什么要让run()方法自动开启”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“为什么要让run()方法自动开启”吧!

  cpu有随机性,线程抢到cpu,才能干活,所以run()方法必须通过strat()方法自动启动,这样cpu就获得了一个信号,知道该线程可以抢占cpu资源;

手动运行垃圾回收器

原理:当执行gc是,会触发垃圾回收机制,开启垃圾回收线程,执行finalize方法

cpu的特性:多个线程之间是抢cpu的关系,cpu有随机性

主函数结束,主任务区结束,主线程随着任务的结束而结束,线程随着任务的开始而开始

创建线程

默认情况下,主线程和垃圾回收线程都是由系统创建

①用Thread创建线程对象

Thread thread1=new Thread();  //只是创建Thread对象

thread1.start();   //开启线程

Thread类里的run()方法默认是空的,所以start()方法执行结果

所以需要继承Thread类 重写run()方法

若run()方法直接被手动调用,run()对应的线程跟调用该方法所在的线程对应

Thread类实现了Runnable接口,Runnable接口里面只有run()方法,Thread类里实现的run()方法也只是空方法体,需要被继承去重写

创建一个A类实现Runnable接口,重写run()方法

A a=new A();

Thread to=new Thread(A);

to.start();

给某个方法的线程冲突部分加锁

锁的条件

①锁必须是对象

②要被所有的线程共享

同步代码块

synchronized(this){代码块}

同步函数

非静态  public synchronized void xxx(){}   //默认的锁是this  synchronized(this)

静态 public synchronized static void xxx(){}  //默认的锁是当前类的字节码文件   synchronized(xx.class)

notify(终止线程休眠)     wait(线程休眠,不可以抢占cpu)

wait()-->必须在同步环境中使用,必须使用锁调用,执行这行代码,对应的是哪个线程,就

notify()-->唤醒的是同一把锁下的线程,

Lock(显示同步) 替换 Synchronized(隐式同步)

//创建锁对象 Lock lock=new ReentrantLock();

//用于生产任务的Condition

Condition proCon = lock.newCondition();

//用于结束任务的condition

Condition conCon = lock.newCondition();

//开启锁

lock.lock();

proCon.await();

conCon.signal();

conCon.await();

proCon.signal();

//关闭锁

lock.unlock();

守护线程

当程序调用setDaemon方法时,并且将参数设置成true,当前线程就变成了了守护线程,只要主线程结束,该守护线程就会结束,这个方法一定要在start前调用

join()方法,优先级高于主线程,主线程会等当前的线程执行完后再去执行;该方法是在start之后。

到此,相信大家对“为什么要让run()方法自动开启”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

run
AI