第一题:每个线程分别与CPU交互,由CPU分配工作。
第二题:直接调用还是单线程,他是用主线程直接执行的。
第三题:创建状态:就是new一个线程
就绪状态:准备获得CPU的同意
阻塞状态:等待其他线程运行中
运行状态:正在执行CPU分配的任务中
死亡状态:线程自然执行完毕,外部干涉终止线程
4.代码:
public class xiancheng4 extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
Thread.currentThread().setName(“线程1”);
for (int i = 0; i <+ 5; i++) {
System.out.println(i+"—"+Thread.currentThread().getName());
}
}
}
public class xiancheng4_2 implements Runnable {
@Override
public void run() {
Thread.currentThread().setName("线程2");
// TODO Auto-generated method stub
for (int i = 0; i <+5; i++) {
System.out.println(i+"---"+Thread.currentThread().getName());
}
}
public static void main(String[] args) {
xiancheng4 x=new xiancheng4();
xiancheng4_2 x2=new xiancheng4_2();
Thread t1=new Thread(x2);
// TODO Auto-generated method stub
x.start();
t1.start();
}
}
第五题:
public class quqian implements Runnable {
private int money=500;
@Override
public void run() {
while(true){
synchronized (this) {System.out.println(Thread.currentThread().getName()+"准备取钱"+"取钱完成");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
money=money-100;
if (money<=0) {
System.out.println(Thread.currentThread().getName()+"取钱失败,余额不足");
// System.exit(0);
break;
}
}}
}
public static void main(String[] args) {
quqian q1=new quqian();
Thread t1=new Thread(q1,"张三");
Thread t2=new Thread(q1,"张三的妻子");
t1.start();
t2.start();
}
}
学员操作:
public class xiancheng extends Thread {
@Override
public void run() {
for (int i = 0; i <5; i++) {
System.out.println(Thread.currentThread().getName()+"asd"+i);
}
}
}
import java.util.Scanner;
public class test22 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// test2 t=new test2();
// Scanner a=new Scanner(System.in);
// System.out.println(“请输入1-100的数字”);
// try {
// int b=a.nextInt();
// t.setAge(b);
// } catch (Exception e) {
// // TODO: handle exception
// e.printStackTrace();
//
// }
// xiancheng x=new xiancheng();
// x.start();
jiekou j=new jiekou();
Thread a1=new Thread(j);
Thread a2=new Thread(j);
a1.start();
try {
a1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
a2.start();
}
}
public class jielisaipao implements Runnable {
private int num1=1000;
private int num2=10;
public void run() {
while (true) {
synchronized (this) {
if (num1==0) {
System.out.println(“asdsad”);
break;
}else {
System.out.println(Thread.currentThread().getName()+"号选手拿到了接力棒");
for (int i = 1; i <=10; i++) {
System.out.println(Thread.currentThread().getName()+"号跑了"+(i*num2)+"米");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}num1=num1-100;
System.out.println(num1);
}
}
}
}
import java.util.HashMap;
import java.util.Hashtable;
public class jieli {
public static void main(String[] args) {
// TODO Auto-generated method stub
jielisaipao j=new jielisaipao();
Thread t1=new Thread(j,"1");
Thread t2=new Thread(j,"2");
Thread t3=new Thread(j,"3");
Thread t4=new Thread(j,"4");
Thread t5=new Thread(j,"5");
// t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}