java 从零开始,学习笔记之基础入门<线程及实例分析>(十九)(三)

2014-11-24 08:29:18 · 作者: · 浏览: 9
/设置优先级或者设置其他的线程状态,那么创建线程访问CPU的机率是对等的。
//表示是停止当前正在执行的线程去执行其他的线程
public void run(){
for(int i=0;i<20;i++){
yield(); //线程让步
System.out.println(this.getName()+"i="+i);
}
}
}
package com.ibm.control;
public class YieldDemo02 extends Thread{
public void run(){
for(int i=0;i<20;i++){
System.out.println(this.getName()+"i="+i);
}
}
}
package com.ibm.control;
public class YieldTest {
public static void main(String[] args) {
YieldDemo yd1=new YieldDemo();
//给线程赋名称
yd1.setName("线程一");
yd1.start();
YieldDemo02 yd2=new YieldDemo02();
yd2.setName("线程四");
yd2.start();
}
//如果在一个线程上加入了yield方法表示的是此线程将某些访问cpu的权限给其他线程先执行
//自己访问线程的几率相比其他没有让步的线程就小了,如果CPU是多核的,那么此线程操作就不好控制
}
创建一个以时间命名的文件存放在指定的目录中
package com.ibm.control;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SleepDemo02 extends Thread{
public void run(){
for (int i = 0; i < 10; i++) {
try {
sleep(5*1000);
show();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void show() throws IOException{
//创建一个以时间命名的文件存放在制定的目录中
File file = new File("d:\\aa");
Date date =new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss-SSS");
String datename = sdf.format(date);
String filename = datename+".js";
//拼接生成文件的完整路径
String str = file.getPath();
String name = str+"\\"+filename;
File newFile = new File(name);
if(!newFile.exists()){
newFile.createNewFile();
}
}
public static void main(String[] args)throws IOException {
new SleepDemo02().start();
}
}
线程优先级
最小值,最大值
package com.ibm.control;
public class PriorityDemo01 extends Thread{
public void run(){
//输出线程的优先级的值
System.out.println("PriorityDemo01线程:"+this.getPriority());
//输出线程的最大值
System.out.println("线程优先级最大值:"+Thread.MAX_PRIORITY);
System.out.println("线程优先级最小值:"+Thread.MIN_PRIORITY);
}
public static void main(String[] args) {
System.out.println("main线程:"+Thread.currentThread().getPriority());
//启动PriorityDemo01线程
new PriorityDemo01().start();
}
}
两个线程设置优先级作比较
package com.ibm.control;
public class PriorityDemo02 extends Thread {
public void run() {
for (int i = 0; i < 500; i++) {
System.out.println(this.getName() +" " + i);
}
}
}
package com.ibm.control;
public class PriorityDemo03 extends Thread {
public void run() {
for (int i = 0; i < 500; i++) {
System.out.println(this.getName() +" " + i);
}
}
}
package com.ibm.control;
public class PriorityTest {
public static void main(String[] args) {
PriorityDemo03 pd3=new Prio