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

品牌网站建设策重大军事新闻视频

品牌网站建设策,重大军事新闻视频,济南网站建设云华互动,做教案比较好的网站文章目录 一、线程的启动1.1 start()方法 二、线程的休眠与中断2.1 Thread.sleep()方法2.2 interrupt()方法 三、线程的等待与唤醒3.1 wait()方法3.2 Object类的notify()和notifyAll()方法3.3 await()和signal()方法3.4 使用join()方法等待线程执行完成 四、线程的状态控制与管… 文章目录 一、线程的启动1.1 start()方法 二、线程的休眠与中断2.1 Thread.sleep()方法2.2 interrupt()方法 三、线程的等待与唤醒3.1 wait()方法3.2 Object类的notify()和notifyAll()方法3.3 await()和signal()方法3.4 使用join()方法等待线程执行完成 四、线程的状态控制与管理4.1 线程的优先级设置4.2 线程的守护与非守护状态 五、其他常用的线程操作方法5.1 使用yield()方法让出CPU资源5.2 使用isAlive()方法判断线程是否存活 一、线程的启动 1.1 start()方法 无论是通过继承Thread类还是实现Runnable接口线程的启动都需要调用start()方法。 // 定义一个实现Runnable接口的自定义线程类 public class MyRunnable implements Runnable {Overridepublic void run() {// 线程执行的代码逻辑} }// 在主线程中创建并启动自定义线程 public class Main {public static void main(String[] args) {// 创建线程对象Thread thread new Thread(new MyRunnable());// 启动线程thread.start();} }二、线程的休眠与中断 2.1 Thread.sleep()方法 Thread.sleep()方法用于使当前线程休眠一段时间。它接受一个以毫秒为单位的参数表示线程休眠的时间调用这个方法必须要声明或捕捉异常。 try {// 线程休眠2秒Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(线程休眠结束);2.2 interrupt()方法 Thread类的interrupt()方法用于中断线程。当一个线程被中断时它的中断状态将被设置为true默认是 flase设置后不一定真的中断看jvm如何选择我们把握不了。 调用中断方法也要声明或捕捉异常InterruptedException 可以通过Thread类的isInterrupted()方法来检查线程的中断状态。 public class MyThread implements Runnable {Overridepublic void run() {while (!Thread.currentThread().isInterrupted()) {System.out.println(线程执行中);}System.out.println(线程被中断);} }public class Main {public static void main(String[] args) {// 创建线程对象Thread thread new Thread(new MyThread());// 启动线程thread.start();// 中断子线程try {thread.interrupt();} catch (InterruptedException e) {e.printStackTrace();}} }三、线程的等待与唤醒 线程的等待与唤醒是多线程编程中常用的一种机制它允许线程在满足特定条件之前等待然后在条件满足时被唤醒继续执行。Java提供了多种方式来实现线程的等待与唤醒。 3.1 wait()方法 Object类中的wait()方法用于使当前线程等待并释放当前线程持有的锁。wait()方法需要在synchronized块内部调用以确保线程在等待前释放锁。 调用wait方法使线程进入等到状态后不会自动醒过来需要手动让线程苏醒。 public class MyThread implements Runnable {final Object lock new Object(); // 用于同步的对象Overridepublic void run() {synchronized (lock) {// 线程等待并释放锁lock.wait();}} }3.2 Object类的notify()和notifyAll()方法 Object类中的notify()方法用于唤醒在相同对象上调用wait()方法而等待的单个线程而notifyAll()方法用于唤醒所有在相同对象上调用wait()方法而等待的线程。 public class MyThread implements Runnable {private final Object lock;public MyThread(Object lock) {this.lock lock;}Overridepublic void run() {synchronized (lock) {try {// 线程等待并释放锁lock.wait();// 线程被唤醒后执行其他操作System.out.println(线程被唤醒);} catch (InterruptedException e) {e.printStackTrace();}}} }public class Main {public static void main(String[] args) {Object lock new Object();// 创建自定义线程对象MyThread myThread1 new MyThread(lock);MyThread myThread2 new MyThread(lock);// 创建线程对象Thread thread1 new Thread(myThread1);Thread thread2 new Thread(myThread2);// 启动线程thread1.start();thread2.start();// 主线程休眠1秒后唤醒所有子线程try {Thread.sleep(1000);synchronized (lock) {lock.notifyAll();}} catch (InterruptedException e) {e.printStackTrace();}} }3.3 await()和signal()方法 Condition接口的await()方法可以使线程等待并释放当前线程持有的锁。当其他线程调用signal()或signalAll()方法时等待的线程将被唤醒。 import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class MyThread implements Runnable {private final Lock lock;private final Condition condition;public MyThread(Lock lock, Condition condition) {this.lock lock;this.condition condition;}Overridepublic void run() {lock.lock();try {// 线程等待并释放锁condition.await();// 线程被唤醒后执行其他操作System.out.println(线程被唤醒);} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}} }public class Main {public static void main(String[] args) {Lock lock new ReentrantLock();Condition condition lock.newCondition();// 创建自定义线程对象MyThread myThread new MyThread(lock, condition);// 创建线程对象Thread thread new Thread(myThread);// 启动线程thread.start();// 主线程休眠1秒后唤醒子线程try {Thread.sleep(1000);lock.lock();condition.signalAll();lock.unlock();} catch (InterruptedException e) {e.printStackTrace();}} }3.4 使用join()方法等待线程执行完成 join()方法可以使一个线程等待另一个线程执行完成。当调用线程的join()方法时调用线程将被阻塞直到被调用的线程执行完成。下面是使用join()方法等待线程执行完成的示例 public class MyThread implements Runnable {Overridepublic void run() {System.out.println(子线程开始执行);try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(子线程执行完成);} }public class Main {public static void main(String[] args) {// 创建自定义线程对象MyThread myThread new MyThread();// 创建线程对象Thread thread new Thread(myThread);// 启动线程thread.start();// 主线程调用join()方法等待子线程执行完成try {thread.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(主线程继续执行);} }四、线程的状态控制与管理 4.1 线程的优先级设置 线程的优先级用于指定线程在竞争CPU资源时的相对重要性。Java中使用整数表示线程的优先级范围从1到10其中1为最低优先级10为最高优先级。可以使用setPriority()方法设置线程的优先级使用getPriority()方法获取线程的优先级。 注意设置了高的优先级只是让线程获取资源的概率增大。 public class Main {public static void main(String[] args) {// 创建线程对象Thread thread new Thread(() - {System.out.println(线程执行中);});// 设置线程优先级为最高thread.setPriority(Thread.MAX_PRIORITY);// 获取线程优先级int priority thread.getPriority();System.out.println(线程优先级 priority);// 启动线程thread.start();} }4.2 线程的守护与非守护状态 线程可以分为守护线程和非守护线程。当只剩下守护线程运行时JVM会退出。可以使用setDaemon()方法将线程设置为守护线程使用isDaemon()方法判断线程是否为守护线程。 守护线程的优先级低这是因为守护线程的业务是不紧急的像JVM垃圾回收线程就被设置成了守护线程。 public class Main {public static void main(String[] args) {// 创建线程对象Thread thread new Thread(() - {System.out.println(线程执行中);});// 设置线程为守护线程thread.setDaemon(true);// 判断线程是否为守护线程boolean isDaemon thread.isDaemon();System.out.println(线程是否为守护线程 isDaemon);// 启动线程thread.start();} }五、其他常用的线程操作方法 5.1 使用yield()方法让出CPU资源 yield()方法是一个静态方法用于提示线程调度器将当前线程让出CPU资源使得其他具有相同优先级的线程有机会执行。调用yield()方法后当前线程会从运行状态变为就绪状态然后等待线程调度器重新调度。 public class Main {public static void main(String[] args) {// 创建线程对象Thread thread1 new Thread(() - {for (int i 0; i 5; i) {System.out.println(线程1执行中);Thread.yield();}});Thread thread2 new Thread(() - {for (int i 0; i 5; i) {System.out.println(线程2执行中);Thread.yield();}});// 启动线程thread1.start();thread2.start();} }在上面的示例中创建了两个线程对象thread1和thread2它们分别输出线程1执行中和线程2执行中。在每次循环中通过调用yield()方法让出CPU资源使得两个线程可以交替执行。 5.2 使用isAlive()方法判断线程是否存活 isAlive()方法用于判断线程是否存活即线程是否已经启动且尚未终止。如果线程存活返回true否则返回false。 public class Main {public static void main(String[] args) {// 创建线程对象Thread thread new Thread(() - {System.out.println(线程执行中);});// 启动线程thread.start();// 判断线程是否存活boolean isAlive thread.isAlive();System.out.println(线程是否存活 isAlive);} }
http://www.w-s-a.com/news/366450/

相关文章:

  • 廊坊建设网站的公司wordpress清理无用缩略图
  • 桓台网站建设公司首钢建设二建设公司网站
  • 网站建设添加背景命令前端如何优化网站性能
  • 设置网站域名中山画册设计公司
  • 三更app下载网站东莞网站制作公
  • 做图书馆网站模板网站建设文化策划方案
  • 惠州城乡住房建设厅网站服装设计自学零基础
  • 网站建设常态化工作机制广州骏域网络
  • h5婚纱摄影网站模板wordpress 显示下列项目
  • 广告网站推广销售北京最新消息发布
  • 完整网站源码asp拨打12355可以找团员密码吗
  • 北京有多少家网站怎么自己在百度上做网站
  • 怎样围绕网站专题发展来做ppt网站建设回龙观
  • 网站配置服务Wordpress红色网站源码
  • 外贸网站建设内容包括软件开发公司流程
  • 做中医药网站有前景吗企业网站优化公司
  • 四川建设设计公司网站海南澄迈县
  • 邳州做网站梵克雅宝项链官网价格图片
  • dede网站收录滦平县建设局网站
  • 上海网站建设开发公注册公司要求什么条件
  • 安徽汽车网网站建设wordpress 知乎
  • 网站建设的功能都需要有哪些在线平台
  • 湖南岳阳网站开发网络公司石家庄做网站的公司哪个好
  • 西安市做网站的公司门户网站对应序号是什么
  • 太原网站域名开发什么是网页界面设计
  • 做产品类网站有哪些做一百度网站吗
  • 在线视频网站建设国外最新创意产品网站有哪些方面
  • 在一个网站下建设多个子网站宣传册画册设计公司
  • 潍坊网站建设公司排名网站建设预付
  • 手机和wap网站建设crm客户管理系统模板