java 线程理解
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 线程理解的更多相关文章
- java 线程 理解 解析
1 线程的概述 进程:正在运行的程序,负责了这个程序的内存分配,代表了内存中的执行区域. 线程:就是在一个进程中负者一个执行路径. 多线程:就是在一个进程中多个执行路径同时执行. 假象: 电脑上的程序 ...
- java线程安全理解
java线程安全理解 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. ...
- Java进程线程理解
一个进程包括由操作系统分配的内存空间,包含一个或多个线程.一个线程不能独立的存在,它必须是进程的一部分.一个进程一直运行,直到所有的非守护线程都结束运行后才能结束. 多线程能满足程序员编写高效率的程序 ...
- Java线程锁&分布式锁的理解及应用
了解Java线程锁之前,先理解线程和进程的定义.进程是操作系统分配资源(CPU)的基本单位,线程是CPU执行的基本单位,一个进程可拥有多个线程,同进程间的多个线程共享分配给进程的资源.比如启动JVM时 ...
- 深入理解Java线程池:ScheduledThreadPoolExecutor
介绍 自JDK1.5开始,JDK提供了ScheduledThreadPoolExecutor类来支持周期性任务的调度.在这之前的实现需要依靠Timer和TimerTask或者其它第三方工具来完成.但T ...
- Java线程工作内存与主内存变量交换过程及volatile关键字理解
Java线程工作内存与主内存变量交换过程及volatile关键字理解 1. Java内存模型规定在多线程情况下,线程操作主内存变量,需要通过线程独有的工作内存拷贝主内存变量副本来进行.此处的所谓内存模 ...
- 干货,阿里P8浅谈对java线程池的理解(面试必备)
线程池的概念 线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成:ThreadPoolExecutor ...
- 深入理解 Java 线程池
一.简介 什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务. 为什么要用线程池 如果并发请求数量很多,但每个线程执行的时间很短,就会出现频繁的创建 ...
- java线程的理解
java thread类都是native方法实现的,所以没有用平台无关的方法实现,怎么实现的呢? 线程的实现: 第一种:使用内核线程实现. 内核线程就是直接使用操作系统内核支持的线程,由内核完成切换. ...
随机推荐
- 最近学习了Sqlite3数据库,写一下操作应用以及命令
首先使用Flask-SQLAlchemy管理数据库 使用pip安装:pip install flask-sqlalchemy 接着要配置数据库,定义模型 关于数据库的操作就不再写了.... 使用Fla ...
- Python机器学习(基础篇---监督学习(k近邻))
K近邻 假设我们有一些携带分类标记的训练样本,分布于特征空间中,对于一个待分类的测试样本点,未知其类别,按照‘近朱者赤近墨者黑’,我们需要寻找与这个待分类的样本在特征空间中距离最近的k个已标记样本作为 ...
- 使用 ado.net访问数据库
一.ADO.NET :用于连接数据库的技术 1.ADO.NET分为两大组件 DataSet:数据集 .NET FRAMWORK :用于连接到数据库,发送命令,检索结果 2.ADO. ...
- 推理机Jess,Racer,Jena
推理机 Jess(Java Expert Shell System)是基于Java语言的CLISP推理机. CLISP是基于产生式的前向推理引擎,许多上层的推理任务,都要映射到这个推理引擎上来运行. ...
- [模板] 无旋Treap (C++ class)
注意!本帖不是算法介绍!只是贴代码(逃) //嫌stdlib的rand太慢,手打了一个 /* Author: hotwords */ typedef unsigned int tkey; class ...
- Docker入门教程
一.入门介绍 Docker是一个开源引擎,类似于一个集装箱,开发者通过它可以为任何应用创建一个轻量级.环境无关可移植的容器.开发者在本地编译测试过的容器可以在不同的环境中部署. 通常适用于如下场景: ...
- python之三级目录
#python之三级目录低配版 menu = { '北京':{ '朝阳':{ '国贸':{ 'CICC':{ }, 'HP':{ }, '渣打银行':{ }, 'CCTV':{ }, }, '望京': ...
- 服务器配置+wordpress建站(小白)
一. 安装好centos7.2系统后,登录centos系统输入如下命令: yum install -y wget && wget -O install.sh http://downlo ...
- javascript 对象数组排序(按照科目级次)
需求 从后台获取的数据是这样的 上帝要这样的 背景 从后台获取到表格数据,然后填充到excel.当然是用js来填充的.js 本身的数组具有sort()功能.但是是针对 ...
- linux开机默认启动命令行模式
进入vi /etc/inittab 修改id:5:initdefault: 为id:3:initdefault: