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

   1.1  join

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

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

          

package com.an;

public class ThreadTarget implements Runnable {
//多线程共享资源i
private int i;
public void run() {
for (;i<20;i++){
System.out.println(Thread.currentThread().getName()+"="+i);
}
} public static void main(String[] args)throws InterruptedException{
for (int i=0;i<30;i++){
System.out.println(Thread.currentThread().getName()+"="+i);
//当i==15时,main线程将被阻塞,test-one线程启动执行,直到test-one线程执行完成,main线程才继续执行
if (i==15){
ThreadTarget threadTarget=new ThreadTarget();
Thread thread=new Thread(threadTarget,"test-one");
thread.start();
thread.join();
}
}
}
}

   1.2  sleep

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

package com.an;

public class ThreadTest {
public static void main(String[] args){
for (int i=0;i<30;i++){
System.out.println(Thread.currentThread().getName()+"="+i);
//当i==15时,main线程将被阻塞,5000毫秒后继续执行
if (i==15){
System.out.println("5000毫秒后执行...");
Thread.sleep(5000);
}
}
}
}

  

   1.3  yield

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

package com.an;

public class ThreadTest {

    public static void main(String[] args){
for (int i=0;i<30;i++){
System.out.println(Thread.currentThread().getName()+"="+i);
//当i==15时,main线程将重新进入就绪状态
if (i==15){
Thread.yield();
}
}
}
}

   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. Cytoscape软件简介

    • Cytoscape一款开源的网络显示和分析软件. 软件的核心部分提供了 网络显示.布局.查询等方面的基本功能. • Cytoscape源自系统生物学,通过Cytoscape,用户可以在可视化的 环 ...

  2. JavaWeb(五):MVC案例

    MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它把应用程序分成三个核心模块:模型.视图.控制器,它们各自处理自己的任务.模型是应用程序的主体部分 ...

  3. pycharm 进入Pythonshell脚本调试

  4. webpack对脚本和样式的处理

    一.对js处理 webpack本身支持js加载也可以用插件. 1.加载要全局使用的插件比如jquery 在页面用cdn方式引用,然后再webpack.config.js里配置.会让jquery成为全局 ...

  5. 企业资源计划(ERP)

    ERP(企业资源计划)一般指企业资源计划(ERP) 物资资源管理(物流).人力资源管理(人流).财务资源管理(财流).信息资源管理(信息流) 信息技术在企业管理学上的应用可分做如下发展阶段:A. MI ...

  6. [NOIP2017]逛公园 题解

    我连D1T3都不会我联赛完蛋了 题目描述 策策同学特别喜欢逛公园.公园可以看成一张 N 个点 M 条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口, N 号点是公园的出口,每条边有一个非负 ...

  7. label runat="server"

    <label id="lblWhiteIp_Text_Info" runat="server"></label> 后台对应的类型是 pr ...

  8. ubuntu 设置固定IP

    vim  /etc/network/interface address   要固定的IP地址 netmask  子网掩码  A类地址 默认255.0.0.0   B类地址默 255.255.0.0  ...

  9. 14. Jmeter-配置元件一

    jmeter-配置元件介绍与使用 CSV 数据文件设置 HTTP信息头管理器 HTTP Cookie 管理器 HTTP Cache Manager HTTP请求默认值 计数器 DNS Cache Ma ...

  10. 10. Jmeter-后置处理器一

    jmeter-后置处理器介绍与使用一 今天我们先讲 CSS/JQuery Extractor JSON Extractor Boundary Extractor 正则表达式提取器 CSS/JQuery ...