线程间的调度策略

通常是选择优先级高的线程,但是若发生以下情况则终止线程的运行:
    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);
}
} }
//情况三://在第一种共享成员变量的情况下 如果生成两个runnable接口(helloThread对象)//则每个线程各自仍然会有自己的变量 不会发生冲突 两个helloThread对象 有各自的变量 结果会出来20个数字

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)的更多相关文章

  1. Java Thread 的 sleep() 和 wait() 的区别

    Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别       1. sleep ...

  2. Java Thread 的 run() 与 start() 的区别

    Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别             1. ...

  3. Java Thread wait, notify and notifyAll Example

    Java Thread wait, notify and notifyAll Example Java线程中的使用的wait,notify和nitifyAll方法示例. The Object clas ...

  4. java: Thread 和 runnable线程类

    java: Thread 和 runnable线程类 Java有2种实现线程的方法:Thread类,Runnable接口.(其实Thread本身就是Runnable的子类) Thread类,默认有ru ...

  5. Java Thread join() 的用法

    Java Thread中, join() 方法主要是让调用改方法的thread完成run方法里面的东西后, 在执行join()方法后面的代码.示例: class ThreadTesterA imple ...

  6. Java thread jargon

    In Java thread topic, the task to be executed and the thread to drive the task are two concepts shou ...

  7. 性能分析之-- JAVA Thread Dump 分析综述

    性能分析之-- JAVA Thread Dump 分析综述       一.Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工 ...

  8. Java Thread线程控制

    一.线程和进程 进程是处于运行中的程序,具有一定的独立能力,进程是系统进行资源分配和调度的一个独立单位. 进程特征: A.独立性:进程是系统中独立存在的实体,可以拥有自己独立的资源,每个进程都拥有自己 ...

  9. [译]Java Thread wait, notify和notifyAll示例

    Java Thread wait, notify和notifyAll示例 Java上的Object类定义了三个final方法用于不同线程间关于某资源上的锁状态交互,这三个方法是:wait(), not ...

  10. [译]Java Thread Sleep示例

    Java Thread Sleep示例 java.lang.Thread sleep(long millis)方法被用来暂停当前线程的执行,暂停时间由方法参数指定,单位为毫秒.注意参数不能为负数,否则 ...

随机推荐

  1. Mock接口数据 = mock服务 + iptable配置

    一.mock接口数据应用场景: 1.测试接口A,A接口代码中调用其他服务的B接口,由于开发排期.测试环境不通等原因,依赖接口不可用 2.测试异常情况,依赖接口B返回的数据格式不对.返回None.超时等 ...

  2. python中的垃圾回收机制及原理

    序言: 来一起看看: 不同于C/C++,像Python这样的语言是不需要程序员写代码来管理内存的,它的GC(Garbage Collection)机制 实现了自动内存管理.GC做的事情就是解放程序员的 ...

  3. Oracle Grid,ASM,Database on Redhat 7.5

    目录 Oracle安装包 Oracle官方文档 Blog Oracle Grid Installation Process 用户.组.目录 Oracleasm 创建 ASM 磁盘 Database S ...

  4. selenium下拉一个框内的滚动条

    js='document.getElementsByClassName("route-tree")[0].scrollTop=10000'

  5. process-hacker

    https://github.com/processhacker/processhacker#process-hacker // begin_phapppub typedef enum _PH_KNO ...

  6. ps:界面概览

    首先我们来认识一下Photoshop的界面组成,如下图是一个典型的界面.为了方便识别,我们加上了颜色和数字. 1:顶部的红色区域是菜单栏,包括色彩调整之类的命令都存放在从菜单栏中.在我们的教程中使用[ ...

  7. arm算力

    arm 算力运算 MIPS: Million Instructions executed Per SecondDMIPS: Dhrystone Million Instructions execute ...

  8. CSP-S2019 停课日记

    前言 不想上文化课,于是就停课了 (雾) \(10.13\) 停课前一天 今天名义上是放假,所以不算停课. 老师和同学们听说我要停课,都十分的不舍.我啥也没说就悄悄溜到一中来了. \(10.14\) ...

  9. 获取kingeditor编辑器内容

    //初始化编辑器 var editorMini = KindEditor.create('.editor-mini',{ width : '70%', height : '250px', resize ...

  10. Ubuntu 18.04 安装 Octave 5.1

    最新版目前只能通过编译安装.折腾了半天终于搞定: 需要使用apt-get install先把各种 dependencies 安装好. 编译JIT需要安装sudo apt-get install llv ...