1.创建两个线程,在一个线程中打印输出1-100以内的偶数,在一个线程中输出1-100以内的奇数.
/*偶数*/
public class Even extends Thread{
@Override
public void run() {
for (int i = 2; i <= 100; i+=2) {
System.out.println(i);
}
}
}
/*奇数*/
public class Odd extends Thread{
@Override
public void run() {
for (int i = 1; i < 100; i+=2) {
System.out.println(i);
}
}
}
public class Test1 {
public static void main(String[] args) throws InterruptedException {
//创建自己实现的线程对象
Even even = new Even();
Odd odd = new Odd();
//启动线程,并不是启动后就会立即执行。在操作系统处排上队了,什么时候执行由操作系统调度算法决定。
even.start();
odd.start();
even.join();
}
}
2.在单客户端与服务器聊天中引入线程,将发送消息和接收消息功能分别加入到线程中实现.
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",9999);
new SendThread(socket).start(); //创建并启动发送线程
new ReceiveThread(socket).start();
}
}
public class Server {
public static void main(String[] args) throws IOException {
//端口
ServerSocket serverSocket = new ServerSocket(9999);
//监听
Socket socket = serverSocket.accept();
new SendThread(socket).start(); //创建并启动发送线程
new ReceiveThread(socket).start();
}
}
/*
发送消息的线程
*/
public class SendThread extends Thread{
private Socket socket;
private DataOutputStream out;
public SendThread(Socket socket) throws IOException {
this.socket = socket;
this.out = new DataOutputStream(socket.getOutputStream());
}
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
while (true){
//发送消息
String s = scanner.next();
try {
if(socket.isClosed()||s.equals("886")){
break;
}
out.writeUTF(s);
} catch (IOException e) {
e.printStackTrace();
}
}
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class ReceiveThread extends Thread{
private Socket socket;
private DataInputStream in;
public ReceiveThread(Socket socket) throws IOException {
this.socket = socket;
this.in = new DataInputStream(socket.getInputStream());
}
@Override
public void run() {
while (true){
String s = null;
try {
s = this.in.readUTF();
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}