Java thread(3)
线程间的调度策略
通常是选择优先级高的线程,但是若发生以下情况则终止线程的运行:
1 调用yield 让出对cpu的占用权。
2 调用sleep
3 线程由于I/O操作而受阻
4 更高优先级的线程出现
5 时间片用完
线程类的一些相关方法
isAlive()判断线程的死活、getPriority()得到线程的优先级、setPriority()设置线程的优先级、leep()方法使得线程休眠、yield方法放弃线程对cpu的使用权。
对于两个线程何时公用一个变量 何时私自拥有自己的变量的比较
当变量是类的成员变量的时候,这个变量被两个线程共享,如果是局部变量,比如定义在run方法中,这两个线程各自有自己的变量。
//情况一:
//两个线程 各自都有私有的变量 因为int变量声明在run方法中 结果会出来20个数
package com.javase.thread; public class threadTest2 { public static void main(String[]args){
Runnable r=new helloThread();
Thread t1=new Thread(r);
Thread t2=new Thread(r);
t1.start();
t2.start(); }
} class helloThread implements Runnable{ public void run() {
int i=0;
while(true){
i++;
try {
Thread.sleep((long)Math.random()*2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} if(i>10)
{break;}
System.out.println("the number is "+i);
}
} }
//情况二:
//int变量声明在类中 是类的成员变量 两个线程会共享着同一个公有的变量 结果会打印出来10个数字
package com.javase.thread; public class threadTest2 { public static void main(String[]args){
Runnable r=new helloThread();
Thread t1=new Thread(r);
Thread t2=new Thread(r);
t1.start();
t2.start(); }
} class helloThread implements Runnable{
int i=0; public void run() { while(true){
i++;
try {
Thread.sleep((long)Math.random()*2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} if(i>10)
{break;}
System.out.println("the number is "+i);
}
} }
package com.javase.thread;
public class threadTest2 {
public static void main(String[]args){
Runnable r1=new helloThread();
Runnable r2=new helloThread();
Thread t1=new Thread(r1);
Thread t2=new Thread(r2);
t1.start();
t2.start();
}
}
class helloThread implements Runnable{
int i=0;
public void run() {
while(true){
i++;
try {
Thread.sleep((long)Math.random()*2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(i>10)
{break;}
System.out.println("the number is "+i);
}
}
}
Java thread(3)的更多相关文章
- Java Thread 的 sleep() 和 wait() 的区别
Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别 1. sleep ...
- Java Thread 的 run() 与 start() 的区别
Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别 1. ...
- Java Thread wait, notify and notifyAll Example
Java Thread wait, notify and notifyAll Example Java线程中的使用的wait,notify和nitifyAll方法示例. The Object clas ...
- java: Thread 和 runnable线程类
java: Thread 和 runnable线程类 Java有2种实现线程的方法:Thread类,Runnable接口.(其实Thread本身就是Runnable的子类) Thread类,默认有ru ...
- Java Thread join() 的用法
Java Thread中, join() 方法主要是让调用改方法的thread完成run方法里面的东西后, 在执行join()方法后面的代码.示例: class ThreadTesterA imple ...
- Java thread jargon
In Java thread topic, the task to be executed and the thread to drive the task are two concepts shou ...
- 性能分析之-- JAVA Thread Dump 分析综述
性能分析之-- JAVA Thread Dump 分析综述 一.Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工 ...
- Java Thread线程控制
一.线程和进程 进程是处于运行中的程序,具有一定的独立能力,进程是系统进行资源分配和调度的一个独立单位. 进程特征: A.独立性:进程是系统中独立存在的实体,可以拥有自己独立的资源,每个进程都拥有自己 ...
- [译]Java Thread wait, notify和notifyAll示例
Java Thread wait, notify和notifyAll示例 Java上的Object类定义了三个final方法用于不同线程间关于某资源上的锁状态交互,这三个方法是:wait(), not ...
- [译]Java Thread Sleep示例
Java Thread Sleep示例 java.lang.Thread sleep(long millis)方法被用来暂停当前线程的执行,暂停时间由方法参数指定,单位为毫秒.注意参数不能为负数,否则 ...
随机推荐
- Redis的持久化存储
Redis的持久化 Redis 是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题, Redis 提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. RD ...
- mybatis-plus&springboot
** 问题1:mybatis 读取不到 mapper映射文件. 如下: ** 如果引用 mybatis-plus 包 <dependency> <groupId>com.bao ...
- Untiy3D学习笔记记录
一,原点和中心点 pivot(原点):位置移动的点(模型的原点不会发生变化) center(中心点):计算模型的中心,会发现变化(比如有两个cube,他的中心点会计算在两个模型的中间) 二,prefa ...
- JavaScript基础4——省市联动
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- h5与app交互
现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次就来捋 ...
- 如何从mysql备份中提取单张表数据
1.先提取备份数据中的前50行出来,查看一下备份数据格式 head -50 bakdb.sql > head50.txt 类似下面的数据是我们所需要提取的: / ...
- generator (1)
function array () { console.log(arguments) }; array(1,2,3) 从这里我们可以看出 数组的迭代方法里面有一个 属性 [Symbol.iterat ...
- flask之注册功能
一:注册功能 1:前端准备表单 # 前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 配置 Kibana
Products Cloud Services Customers Learn downloads EN Docs Kibana 用户手册 » 搭建 » 配置 Kibana « 在 Windows ...
- Linux命令行工具之pidstat命令
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484624.html pidstat命令就可以帮助我们监测到具体线程的上下文切换 通过pidstat ...