先补充几个小知识:
一,线程的toString方法,返回该线程的字符串表示形式,包括线程名称、优先级和线程组。
二,线程的优先级默认是5,可以通过setPriority()方法更改线程的优先级。
1-10中,1、5、10的效果最明显,所以用常量表示MIN_PRIORITY\NORM_PRIORITY\MAX_PRIORITY。
三,线程的yield()方法暂停当前正在执行的线程对象,并执行其他线程。
什么时候用多线程呢?
当某些代码需要同时被执行时,就用单独的线程进行封装。
例如:
package fighting;
public class ThreadSummary {
/**
* 开发中如何写线程?
* 这个程序有三个循环,第一个循环不执行完,其他两个线程就没有办法执行。
* 如果第一个循环次数很大的话,那么这个程序就会效率很低。
*/
public static void main(String[] args) {
for(int x=0;x<100;x++){
System.out.println(Thread.currentThread().getName()+"..."+x);
}
for(int x=0;x<100;x++){
System.out.println(Thread.currentThread().getName()+"..."+x);
}
for(int x=0;x<100;x++){
System.out.println(Thread.currentThread().getName()+"..."+x);
}
}
}
经过修改后的代码如下:
package fighting;
public class ThreadSummary {
/**
* 开发中如何写线程?
* 这个程序有三个循环,第一个循环不执行完,其他两个线程就没有办法执行。
* 如果第一个循环次数很大的话,那么这个程序就会效率很低。
*
* 什么时候用多线程呢?
* 当某些代码需要同时被执行时,就用单独的线程进行封装。
*
* 这个程序中的三个循环,经过三个线程封装,启动,那么三个循环里的代码就可以同时执行了。
*/
public static void main(String[] args) {
//第一个循环
new Thread(){
public void run(){
for(int x=0;x<100;x++){
System.out.println(Thread.currentThread().getName()+"..."+x);
}
}
}.start();
//第二个循环
new Thread(new Runnable(){
public void run(){
for(int x=0;x<100;x++){
System.out.println(Thread.currentThread().getName()+"..."+x);
}
}
}).start();
//第三个循环
new Thread(new Runnable(){
public void run() {
for(int x=0;x<100;x++){
System.out.println(Thread.currentThread().getName()+"..."+x);
}
}
}).start();
}
}
经过把每个循环的代码,分别封装到不同的线程,线程启动,三个循环的代码就可以同时执行了。