Java之进程与线程练习
来源:互联网 发布:网络蜘蛛 磁力搜索 编辑:程序博客网 时间:2024/06/07 21:48
1.设计一个线程类:创建3个子线程,每个线程分别打印数字,分别睡眠100,200,300ms —>每个执行都是20次
代码:
package Homework;//1.设计一个线程类:创建3个子线程,每个线程分别打印数字,分别睡100,200,300 --->每个执行都是20次public class Test1 { public static void main(String[] args) { A a=new A(); B b=new B(); C c=new C(); a.start(); b.start(); c.start(); }}class A extends Thread{ @Override public void run() { for(int i=0;i<20;i++){ System.out.println("a线程"+i); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}class B extends Thread{ @Override public void run() { for(int i=0;i<20;i++){ System.out.println("b线程"+i); try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}class C extends Thread{ @Override public void run() { for(int i=0;i<20;i++){ System.out.println("c线程"+i); try { Thread.sleep(300); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
部分运行结果:
2.创建两个线程模拟下载数据,第一个线程负责下载10张图片,第二个线程负责下载20条数据,分别休眠20毫秒和10毫秒。观察打印情况。
代码:
下载数据线程:
package Homework;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class DownLoadData extends Thread{ @Override public void run() { for(int i=0;i<20;i++){ FileInputStream fis=null; FileOutputStream fos=null; try { fis=new FileInputStream(new File("Photo\\a.txt")); fos=new FileOutputStream(new File("Example\\a"+i+".txt")); byte[] bs=new byte[2]; int count=0; while((count=fis.read(bs))!=-1){ fos.write(bs, 0, count); fos.flush(); } } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(fis!=null){ try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(fos!=null){ try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } System.out.println("数据第"+i+"次复制完毕"); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
下载图片线程:
package Homework;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class DownLoadPhoto extends Thread { @Override public void run() { for(int i=0;i<10;i++){ FileInputStream fis=null; FileOutputStream fos=null; try { fis=new FileInputStream(new File("Photo\\img1.png")); fos=new FileOutputStream(new File("Example\\img"+i+".png")); byte[] bs=new byte[2]; int count=0; while((count=fis.read(bs))!=-1){ fos.write(bs, 0, count); fos.flush(); } } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(fis!=null){ try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(fos!=null){ try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } System.out.println("图片第"+i+"次复制完毕"); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
测试类:
package Homework;import java.io.File;public class Test2 { public static void main(String[] args) { //在当前工程下创建文件夹 File file2=new File("Example"); if(!file2.exists()){ file2.mkdirs(); } //创建线程对象,并启动线程 DownLoadData data=new DownLoadData(); DownLoadPhoto photo=new DownLoadPhoto(); data.start(); photo.start(); }}
部分运行结果:
3.每个线程打印4个:左手是一个线程负责画”□”,右手也是一个线程负责画”O”,左每画一个睡300,右每画一个睡200.
代码:
package Homework;public class Test3 { public static void main(String[] args) { Left left=new Left(); Right right=new Right(); left.start(); right.start(); }}class Left extends Thread{ @Override public void run() { for(int i=0;i<4;i++){ System.out.println("left线程:“口”"); try { Thread.sleep(300); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}class Right extends Thread{ @Override public void run() { for(int i=0;i<4;i++){ System.out.println("right线程:“o”"); try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
运行结果
4.创建一个Container类,该类中有属性 int count=200 ,
定义一个方法 getOne(){执行count的–}表示:每调用一次getOne()方法count数量减1。
三个线程操作Container类,每个线程执行10次,每执行一次sleep(100).保证数据的安全性
代码:
package Homework;/** * 4.创建一个Container类,该类中有属性 int count=200 , * 定义一个方法 getOne(){执行count的--}表示每调用一次getOne()方法count数量减1。 * 三个线程操作Container类,每个线程执行10次,每执行一次sleep(100).保证数据的安全性 * @author Administrator * */public class Test4 { public static void main(String[] args) { Container container=new Container(); MyThread myThread=new MyThread(container); MyThread myThread2=new MyThread(container); MyThread myThread3=new MyThread(container); myThread.start(); myThread2.start(); myThread3.start(); }}class Container{ int count=200; public void getOne(){ count--; System.out.println("当前剩余次数:"+count); }}class MyThread extends Thread{ Container container; public MyThread(Container container) { this.container=container; } @Override public void run() { for(int i=0;i<10;i++){ container.getOne(); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
0 0
- Java之进程与线程练习
- Java之进程与线程
- Java之进程与线程
- Java之进程与线程的区别
- Java复习之进程与线程
- Java多线程基础之进程与线程
- java多线程之线程与进程简介
- Java之进程与线程的区别
- Java 进程与线程
- Java 进程与线程
- Java线程与进程
- java进程与线程
- Java进程与线程
- Java:进程与线程
- java进程与线程
- JAVA进程与线程
- JAVA 线程与进程
- Java之线程同步练习
- 强化学习系列<1>、强化学习入门简介
- filter用法。
- Linux系统 /dev/mapper/VolGroup-lv_root 100% 解决方案
- PO BO VO DTO POJO DAO概念及其作用(附转换图)
- 九度 题目1251:序列分割
- Java之进程与线程练习
- ubuntu下matlab启动报错java.lang.runtime.Exception**********************
- [Android]:View的位置参数
- 网页表格直接导出为Excel文件
- 简单实现生产者消费者问题
- 集群因子 例子
- centos 7 安装git客户端
- Boost.Interprocess使用手册翻译之七:托管内存片段(Managed Memory Segments)
- 表单中input name属性有无[]的区别