1、Java提供了一些工具方法,可以便捷控制线程的执行:

   1.1  join

          Thread提供了让一个线程等待另一个线程执行完成的方法:join;

          当某个程序的执行流中调用其他线程的join方法,该线程将被阻塞,直到被加入的线程执行完成为止;

          

  1. package com.an;
  2.  
  3. public class ThreadTarget implements Runnable {
  4. //多线程共享资源i
  5. private int i;
  6. public void run() {
  7. for (;i<20;i++){
  8. System.out.println(Thread.currentThread().getName()+"="+i);
  9. }
  10. }
  11.  
  12. public static void main(String[] args)throws InterruptedException{
  13. for (int i=0;i<30;i++){
  14. System.out.println(Thread.currentThread().getName()+"="+i);
  15. //当i==15时,main线程将被阻塞,test-one线程启动执行,直到test-one线程执行完成,main线程才继续执行
  16. if (i==15){
  17. ThreadTarget threadTarget=new ThreadTarget();
  18. Thread thread=new Thread(threadTarget,"test-one");
  19. thread.start();
  20. thread.join();
  21. }
  22. }
  23. }
  24. }

   1.2  sleep

           sleep可以将当前线程暂停一段时间,进入阻塞状态;

  1. package com.an;
  2.  
  3. public class ThreadTest {
  4. public static void main(String[] args){
  5. for (int i=0;i<30;i++){
  6. System.out.println(Thread.currentThread().getName()+"="+i);
  7. //当i==15时,main线程将被阻塞,5000毫秒后继续执行
  8. if (i==15){
  9. System.out.println("5000毫秒后执行...");
  10. Thread.sleep(5000);
  11. }
  12. }
  13. }
  14. }

  

   1.3  yield

           yield可以让当前线程暂停,但不会进入阻塞,而是直接进入就绪状态(只有优先级相同或者比该线程优先级高的线程才会获得执行机会);

  1. package com.an;
  2.  
  3. public class ThreadTest {
  4.  
  5. public static void main(String[] args){
  6. for (int i=0;i<30;i++){
  7. System.out.println(Thread.currentThread().getName()+"="+i);
  8. //当i==15时,main线程将重新进入就绪状态
  9. if (i==15){
  10. Thread.yield();
  11. }
  12. }
  13. }
  14. }

   1.4      改变线程的优先级

          getPriority()、setPriority()

JavaSE---多线程---线程的控制的更多相关文章

  1. Java多线程开发系列之四:玩转多线程(线程的控制2)

    在上节的线程控制(详情点击这里)中,我们讲解了线程的等待join().守护线程.本节我们将会把剩下的线程控制内容一并讲完,主要内容有线程的睡眠.让步.优先级.挂起和恢复.停止等. 废话不多说,我们直接 ...

  2. Java多线程之线程的控制

    Java多线程之线程的控制 线程中的7 种非常重要的状态:  初始New.可运行Runnable.运行Running.阻塞Blocked.锁池lock_pool.等待队列wait_pool.结束Dea ...

  3. java多线程中篇(三) —— 线程的控制(创建,运行,阻塞,中断,结束)

    简介 线程的控制就是程序对线程的主要管理,最重要的就是状态的切换维护. 每种转态都有不同的引发事件(对应线程的方法),每种状态又有各自不同的处理步骤和过程,整个线程控制主要就是涉及这些内容. 正文 线 ...

  4. Java多线程-线程的同步与锁

    一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏.例如:两个线程ThreadA.ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据. package ...

  5. JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

    前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事 ...

  6. Java多线程-线程的同步(同步方法)

    线程的同步是保证多线程安全访问竞争资源的一种手段.线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源.什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些 ...

  7. C#多线程--线程池(ThreadPool)

    先引入一下线程池的概念: 百度百科:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务.线程池线程都是后台线程.每个线程都使用默认的堆栈大小,以默认的优先级运行, ...

  8. java 多线程—— 线程让步

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  9. java 多线程—— 线程等待与唤醒

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  10. Java多线程-线程的同步与锁【转】

    出处:http://www.cnblogs.com/linjiqin/p/3208843.html 一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏. 例如:两个线程 ...

随机推荐

  1. shell编程基础知识3

    1.Linux下scp的用法 scp就是secure copy,一个在linux下用来进行远程拷贝文件的命令.有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法 ...

  2. C#基础提升系列——C# LINQ

    C# LINQ LINQ(Language Integrated Query,语言集成查询).在C# 语言中集成了查询语法,可以用相同的语法访问不同的数据源. 命名空间System.Linq下的类En ...

  3. 企业打开云HBase的正确方式,来自阿里云云数据库团队的解读

    一.HBase的历史由来 HBase是一个开源的非关系型分布式数据库(NoSQL),基于谷歌的BigTable建模,是一个高可靠性.高性能.高伸缩的分布式存储系统,使用HBase技术可在廉价PC Se ...

  4. [CF1149E]Election Promises

    可以猜想这题和sg函数有关.(反正也没有什么其它可用的算法) 因为是个DAG,所以可以先求出每个点的sg值.考虑怎样求答案. 根据sg函数证明的思路,我们可以考虑构造一个权值,使得以下三个条件满足: ...

  5. spring boot 修改banner

    在resources目录下新建一个banner.txt,里面添加要显示的内容,如: ////////////////////////////////////////////////////////// ...

  6. vs 2019 create new project 创建新项目

    下面的place solution and project in the same directory 不需要勾选

  7. iOS OpenGL ES简单绘制三角形

    OpenGL 是用于2D/3D图形编程的一套基于C语言的统一接口. windows,Linux,Unix上均可兼容. OpenGL ES 是在OpenGL嵌入式设备上的版本, android/iOS ...

  8. cortable 使用方法

    星期一到星期六,早上六点到晚上六点.每隔两个小时 执行语句 0 6-18/2  * * 1-6 commond

  9. Python 多进程异常处理

    前言 最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较‘重’的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较‘重’ ...

  10. upc组队赛15 Supreme Number【打表】

    Supreme Number 题目链接 题目描述 A prime number (or a prime) is a natural number greater than 1 that cannot ...