本周Java学习如下:
多线程学习:
package duoxiancheng;
public class Music extends Thread{
@Override
public void run() {
for(int i=0;i<1000;i++)
try {
Thread.sleep(100);
System.out.println("听音乐");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package duoxiancheng;
public class Eat extends Thread{
@Override
public void run() {
for(int i=0;i<1000;i++) //间隔零点一秒
try {
Thread.sleep(100);
System.out.println("吃饭");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package duoxiancheng;
public class Demo1 {
/**
* 听音乐
*/
private static void music() {
for(int i=0;i<1000;i++)
System.out.println("听音乐");
}
/**
* 吃饭
*/
private static void eat() {
for(int i=0;i<1000;i++)
System.out.println("吃饭");
}
public static void main(String[] args) {
/*music();
eat();*/
//多线程
/**
* 利用多线程实现一边吃饭一边听音乐
*/
Music musicThread=new Music();
Eat eatThread=new Eat();
musicThread.start();
eatThread.start();
}
}
实现同时执行 吃饭和听音乐的操作
多线程的引入,使两个操作同时进行,有序。
package duoxiancheng;
public class Demo3 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<10;i++) {
// 获取当前线程
Thread t=Thread.currentThread();
System.out.println(t.getName()+":"+i); //返回线程名称
}
}
public static void main(String[] args) {
Demo3 demo3=new Demo3();
Thread t1=new Thread(demo3);
System.out.println("t1是否活动:"+t1.isAlive());
t1.start();
//检查线程是否是活动状态
System.out.println("t1是否活动:"+t1.isAlive());
}
}
以上代码实现了返回线程的名称,并且检查线程的活动状态是否活动。
package duoxiancheng;
public class Demo5 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<10;i++) {
// 获取当前线程
Thread t=Thread.currentThread();
System.out.println(t.getName()+":"+i); //返回线程名称
}
}
public static void main(String[] args) {
/**
* 设置线程优先级
*/
Demo5 demo5=new Demo5();
Thread t1=new Thread(demo5,"X 1");
Thread t2=new Thread(demo5,"Y 1");
Thread t3=new Thread(demo5,"Z 1");
t1.setPriority(Thread.MAX_PRIORITY);
t2.setPriority(Thread.MIN_PRIORITY);
t3.setPriority(Thread.NORM_PRIORITY);
t1.start();
t2.start();
t3.start();
}
}
实现线程的优先级,x优先级最大,z其次,y最小,程序按优先级由高到低执行。
package duoxiancheng;
public class Demo6 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<10;i++) {
try {
Thread.sleep(100);
// 获取当前线程
Thread t=Thread.currentThread();
System.out.println(t.getName()+":"+i); //返回线程名称
if(i==5)
{
System.out.println("线程礼让:");
Thread.currentThread().yield();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Demo6 demo6=new Demo6();
new Thread(demo6,"a 1").start();;
new Thread(demo6,"b 2").start();
}
}
线程礼让:当a执行到5时先执行b,然后当b执行到5时先执行a。即执行到一定步骤,顺序会发生改变。