有问题就有答案
Q1:JAVA编程 题目:一个启动十个线程的程序,每一线程给一个初值为0的变量sum加1。
公共类TestThread { public static int sum=0;类增加实现了可运行的{ @ Override public void run(){ sum=1;系统。出去。println(sum);} } public static void main(String[]args){ for(int I=0;I 10i){ 0新线程(新测试线程()。新增Add()).start();} } }我循环了10次不就是10个线程都开启了吗?
Q2:基础Java题 试编写一个多线程的程序:启动4个线程。其中两个循环10次,每次将某全局变量加1,另两个循环1
public class day 18 _ a { public stat void main(string[]args)throwsinterruptexception { recounrec=recoun。getrec();线程[]TRR=新线程[4];for(inti=0);i4;(一){ TRR[一]=新线我的天“(I)3360 \ t”;}适用于(螺纹3360 TRR){螺纹。start();}适用于(螺纹3360 TRR){螺纹。join();}System.out.println(")拜占庭大人拜占庭大人拜占庭大人3330 " rec。get count());} } class numbadstorionrunable { private receptor;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐;私隐数字测试(recouner,inti){这。re=r;这。n=I } public void run(){ for(inti=0);i10(一){ re。方法(n)}:} } class recoun { private int count=0;private recoun(){ } private static cfinalrucrec=new recoun();publistatocurcec(){ return rec;} public synchronizevoid method(inti){ if(I % 2==0){ system。出去。println(线程。当前线程().get name()(count));} else { system。出去。println(线程。当前线程().get name()(count-);} } public synchronize int getcount(){ return count;}}
Q3:java,一个程序建立1000个线程,每一个线程加1到一个变量sum。
package com.company class adder { privateintsumpublic adder(){ sum=0;} public void addone(){ sum=1;} publiintgetsum(){ returnsum;} }类addthreadextendthread { privateAdderadder;public addthread(Addera){ adder=a;} public void run(){ synchronized(加法器){ adder。addone();} } } public class main { publicationstatement(String[]args){ Addera=NewAdder();thread[]threads=Newthread[1000];for(inti=0;I 1000 I){ threads[I]=new add thread(a);} for(inti=0;I 1000 I){线程[i].start();}尝试{ for(inti=0;I 1000 I){线程[i].join();}}catch(断续异常){ }系统。出去。println(" Sum=" a . getsum());}}
Q4:编制一个Java程序,创建10个线程,用于求解1~1000的和。
数字的类{ private volatile int I=0;私有挥发长合计=0;私有布尔值完成=虚假公共无效递增(){同步(此){系统。出去。println(线程。currentthread().getName()"正在增加");//辅助观看结果的,可以注释掉如果(I=1000)总计=I;else { this.completed=truethis。notify all();//唤醒主线程} } } public long getTotal(){返回此。总计;} public boolean已完成(){返回此。已完成;} }公共类数字增加扩展了线程{数字=空数字增加(数字数字){ this . digital=digtalstart();} public void run(){ while(true){ if(digital。is completed())break;//如果加法操作已经完成了就退出线程数字化。address();} }公共静态void main(String[]args){ Digital Digital=new Digital();数字地址[]Diarray=新数字地址[10];for(int I=0;i10I){ Diarray[I]=新数字地址(数字);//创建10个线程} //如果加法没完成就让主线程等待尝试{同步(数字){ while(!数字化。是完整的())数字。wait();} }catch(断续异常e){ e . print stack trace();}系统。出去。println(数字。gettotal());}}
Q5:java题目 编程题目 多线程
公共类double Thread { public static void main(String[]args){ Thread t1=new Thread(){ @ Override public void run(){ for(char I=" a ";i=" z{ system。出去。println(I);} } };Thread T2=new Thread(){ @ Override public void run(){ for(char I=" A ";i=" Z{系统。出去。println(I);} } };t1。start();T2。start();}}
Q6:java编程题目:实现多线程累加,求代码
照着下面的例子改一下:/** * 实现Runnable接口的类* * @author leimin 2008-9-13 18:12:10 */publicclass DoSomethingimplements Runnable { private String name; public DoSomething(String name) { this.name = name; } publicvoid run() { for (int i = 0; i < 5; i++) { for (long k = 0; k < 100000000; k++) ; System.out.println(name + ": " + i); } } }/** * 测试Runnable类实现的多线程程序* * @author leimin 2008-9-13 18:15:02 */publicclass TestRunnable { publicstaticvoid main(String[] args) { DoSomething ds1 = new DoSomething("阿三"); DoSomething ds2 = new DoSomething("李四"); Thread t1 = new Thread(ds1); Thread t2 = new Thread(ds2); t1.start(); t2.start(); } } 执行结果:李四: 0阿三: 0 李四: 1 阿三: 1 李四: 2 李四: 3 阿三: 2 李四: 4 阿三: 3 阿三: 4 Process finished with exit code 0 2、扩展Thread类实现的多线程例子 /** * 测试扩展Thread类实现的多线程程序* * @author leimin 2008-9-13 18:22:13 */publicclass TestThreadextends Thread{ public TestThread(String name) { super(name); } publicvoid run() { for(int i = 0;i<5;i++){ for(long k= 0; k <100000000;k++); System.out.println(this.getName()+" :"+i); } } publicstaticvoid main(String[] args) { Thread t1 = new TestThread("阿三"); Thread t2 = new TestThread("李四"); t1.start(); t2.start(); } } 执行结果:阿三 :0李四 :0 阿三 :1 李四 :1 阿三 :2 李四 :2 阿三 :3 阿三 :4 李四 :3 李四 :4 Process finished with exit code 0