- 创建两个线程,第一个线程启动调用wait()方法进入阻塞状态,等待另一个线程来唤醒;第二个线程启动后睡眠一段时间,苏醒后调用notifyall()方法唤醒处于阻塞状态的另一个线程。
public class class5_30 {
public static void main(String args[]){
Object dummy=new Object();
Thread t1=new Thread1(dummy);
Thread t2=new Thread2(dummy);
t1.start();
t2.start();
}
}
class Thread1 extends Thread {
Object dummy;
public Thread1(Object s){
dummy = s;
System.out.println("线程已构造");
}
public void run()
{
try {
System.out.println("线程1开始");
System.out.println("线程1等待唤醒");
synchronized (dummy) {
dummy.wait();
}
System.out.println("线程1已被唤醒");
} catch (Exception e) {
}
}
}
class Thread2 extends Thread {
Object dummy;
public Thread2(Object s) {
dummy = s;
System.out.println("线程2已构造");
}
public void run() {
try {
System.out.println("线程2开始");
sleep(50000);
synchronized (dummy) {
dummy.notifyAll();
}
} catch (Exception e) {}
}
}
2. 编写一个有两个线程的程序,第一个线程用来计算2~100000之间的质数及个数,第二个线程用来计算100000~200000之间的质数及个数。
class class5_30_2 extends Thread{
int i,j,x=0;
class5_30_2(int m, int n){
this.i = m;
this.j = n;
}
public void run() {
int p,q;
p=0;q=0;
for(int m=i;m<=j;m++) {
for(int h=1;h<=m;h++) {
q=m%h;
if(q==0)p=p+1;
}
if(p==2) {
x=x+1;
}
p=0;
}
System.out.println("输出"+i+"到"+j+"之间的质数个数:"+x);
}
public static void main(String[] args) {
class5_30_2 thread1 = new class5_30_2(2,100000);
class5_30_2 thread2 = new class5_30_2(100000,200000);
thread1.start();
thread2.start();
}
}
3.编写一个应用程序,读取一个文本文件的内容。
import java.io.IOException;
import java.io.FileReader;
class Main {
public static void main(String[] args) throws IOException {
String fileName ="C:\\Microsoft\\TXT.txt";
FileReader fileReader = new FileReader(fileName);
char[] chars = new char[20];
fileReader.read(chars,0,15);
for(char ch:chars){
System.out.print(ch);
}
}
}
4. 编写一个应用程序,将用户从键盘输入的10行文字存入文件。
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Test {
private static final String LINE_SEPARATOR = System
.getProperty("line.separator");//定义换行符常量
public static void main(String[] args) throws IOException {
int i = 0;
Scanner sc = new Scanner(System.in);//键盘扫描对象
FileWriter fw = new FileWriter("d:\\a.txt");//创建一个输出流
while (i < 10) {
String str = sc.nextLine();//读取键盘输入的一行
fw.write(str + LINE_SEPARATOR);//将该行写到文件中
i++;
}
fw.close();//关闭流
}
}