import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; public class homework514 {
//run()在完成时不会返回值,Callable接口的call()会产生返回值
public static class Run_test implements Runnable{//使用Runnable接口的run()方法{多线程合作完成任务}
private static int taskCount = 0;
private int priority;
private final int id = taskCount++;//线程id
public Run_test(int priority){
this.priority = priority;
}
public String dispaly(){//多线程就应该在run里面输出
return "线程id:"+id+"优先级:"+priority;
}
public void run(){
Thread.currentThread().setPriority(priority);//run()中是多个线程需要完成的任务
System.out.println(dispaly());
Thread.yield();//线程调度器
}
}
public static Thread getThreadName(String threadName) {
Thread t = new Thread(threadName);
while(true){
//根据线程名取得线程
if (t.getName().equals(threadName)){ return t;
}
return null;
}
} static class Runner_extend_test extends Thread{//多线程各自完成任务
private int countDown=5;
private String name;
public Runner_extend_test(String name){
this.name = name;
}//以倒计时为例子
public String dispaly(){//多线程就应该在run里面输出
return name+":"+(countDown>0?countDown:"GO!"); }
public void run() {
while (countDown-- > 0) {
System.out.println(dispaly());
}
} } public static void main(String[] args)
{ /*
for(int i=1;i<=5;i++)//未设置优先级
{
Thread t = new Thread(new Run_test());//提交给Thread构造器
t.start();
}
*/
/*
//创建一个线程集
ExecutorService exec = Executors.newFixedThreadPool(5);//预先限制数量
for(int i=1;i<=5;i++){
exec.execute(new Run_test());
}
exec.shutdown();
*/
/*
//序列化线程,每一个线程会在下一个线程运行前结束
ExecutorService exec = Executors.newSingleThreadExecutor();//预先限制数量
for(int i=1;i<=5;i++){
exec.execute(new Run_test());
}
exec.shutdown();
*/
/*
//设置线程优先级
ExecutorService exec = Executors.newCachedThreadPool();
Run_test one = new Run_test(Thread.MAX_PRIORITY);
Run_test two = new Run_test(Thread.MIN_PRIORITY);
Run_test three = new Run_test(Thread.NORM_PRIORITY);
exec.execute(one);//10
exec.execute(two);//1
exec.execute(three);//5
System.out.println(getThreadName("one"));
exec.shutdown();
*/
//启动继承Thread的线程
Runner_extend_test run_1=new Runner_extend_test("线程1");
Runner_extend_test run_2=new Runner_extend_test("线程2");
Runner_extend_test run_3=new Runner_extend_test("线程3"); run_1.start();
run_2.start();
run_3.start();
}
}

  一切都在代码中

java 线程理解的更多相关文章

  1. java 线程 理解 解析

    1 线程的概述 进程:正在运行的程序,负责了这个程序的内存分配,代表了内存中的执行区域. 线程:就是在一个进程中负者一个执行路径. 多线程:就是在一个进程中多个执行路径同时执行. 假象: 电脑上的程序 ...

  2. java线程安全理解

    java线程安全理解 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. ...

  3. Java进程线程理解

    一个进程包括由操作系统分配的内存空间,包含一个或多个线程.一个线程不能独立的存在,它必须是进程的一部分.一个进程一直运行,直到所有的非守护线程都结束运行后才能结束. 多线程能满足程序员编写高效率的程序 ...

  4. Java线程锁&分布式锁的理解及应用

    了解Java线程锁之前,先理解线程和进程的定义.进程是操作系统分配资源(CPU)的基本单位,线程是CPU执行的基本单位,一个进程可拥有多个线程,同进程间的多个线程共享分配给进程的资源.比如启动JVM时 ...

  5. 深入理解Java线程池:ScheduledThreadPoolExecutor

    介绍 自JDK1.5开始,JDK提供了ScheduledThreadPoolExecutor类来支持周期性任务的调度.在这之前的实现需要依靠Timer和TimerTask或者其它第三方工具来完成.但T ...

  6. Java线程工作内存与主内存变量交换过程及volatile关键字理解

    Java线程工作内存与主内存变量交换过程及volatile关键字理解 1. Java内存模型规定在多线程情况下,线程操作主内存变量,需要通过线程独有的工作内存拷贝主内存变量副本来进行.此处的所谓内存模 ...

  7. 干货,阿里P8浅谈对java线程池的理解(面试必备)

    线程池的概念 线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成:ThreadPoolExecutor ...

  8. 深入理解 Java 线程池

    一.简介 什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务. 为什么要用线程池 如果并发请求数量很多,但每个线程执行的时间很短,就会出现频繁的创建 ...

  9. java线程的理解

    java thread类都是native方法实现的,所以没有用平台无关的方法实现,怎么实现的呢? 线程的实现: 第一种:使用内核线程实现. 内核线程就是直接使用操作系统内核支持的线程,由内核完成切换. ...

随机推荐

  1. 第一个jQuery

    第一个jQuery <script src = "jquery.js"> $(document).ready(function){ alert("Hello ...

  2. 在Python工作环境中安装包命令后加上国内源速度*15

    example: pip install -r requests.txt -r https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pyp ...

  3. ionic3样例应用

    https://github.com/jujunjun/ionic3-study 该应用包括的样例内容有: 文件上传,上拉更新,下拉加载,弹出层,列表,加载中,栅格,按钮等. php提供的文件上传接口 ...

  4. python "import this"

    The Zen of Python, by Tim Peters Beautiful is better than ugly.Explicit is better than implicit.Simp ...

  5. 关于MySQL5.7开启bin-log主从复制

    主从复制:一般用于实时备份.也可配合mycat,实现读写分离. 传统的基于 ROW的主从复制 简单说下步骤: master主库配置同步,slave从库配置同步,master锁表/备份,slave恢复数 ...

  6. 怎么样通过php使用html5实现多文件上传?(php多图上传)

    <!DOCTYPE html><html lang="zh-cn"> <head> <meta charset="utf-8&q ...

  7. element 多个文件上传多次http请求解决方法

    第一步 action="#" 第二步 :auto-upload = "false" 第三步 给元素绑定click事件触发提交方法,注意,把其他没有用的文件都给去 ...

  8. 【Spring】文件上传

    一:引入所需jar包 // https://mvnrepository.com/artifact/commons-fileupload/commons-fileuploadcompile group: ...

  9. 海思hi3516 ive运动目标检测简单实现

    在做车牌识别项目,通过先对识别区域内进行目标识别,能降低CPU的占用率,在检测到有运动目标的时候,再做车牌识别. //图像差分 s32Ret = HI_MPI_IVE_Sub(&IveHand ...

  10. GitHub看板系统(Project)

    /********************************************************************** * GitHub看板系统(Project) * 说明: ...