多线程实现几个案例

1.编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数,第二个线程用来计算100000~200000之间的素数的个数,最后输出结果

第一个线程:计算2-100000的素数个数
package com.yc123.model;

public class Lx_01_sushu implements Runnable{
	@Override
 synchronized public void run() {
		
		int sum=0;
		int i;
		for(i=2;i<100000;i++){
			int j=2;
			while(i%j!=0){
				j++;
			}
			
			if(i==j){
				sum++;
			}
		}
		
		System.out.println("素数个数为:"+sum);
		}
}

第二个线程:计算100000-200000的素数个数
package com.yc123.model;

public class Lx_01_sushu2 implements Runnable{

	@Override
 synchronized public void run() {
		
		int sum=0;
		int i;
		for(i=100000;i<200000;i++){
			int j=2;
			while(i%j!=0){
				j++;
			}
			
			if(i==j){
				sum++;
			}
		}
		System.out.println("素数个数为:"+sum);
	}
}
创建一个测试类
package com.yc123.Test;

import com.yc123.model.Lx_01_sushu;
import com.yc123.model.Lx_01_sushu2;

public class SuShu_Test {

	public static void main(String[] args) {
		
		Lx_01_sushu lx1=new Lx_01_sushu();
		Lx_01_sushu2 lx2=new Lx_01_sushu2();
		Thread t1=new Thread(lx1);
		Thread t2=new Thread(lx2);
		
		t1.start();
		t2.start();
	}
}

结果为:
在这里插入图片描述
2.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。考虑到线程的安全性写出程序。

package com.yc123.model;

public class Lx_04_jiajian{
	
	static int num=10;
	//加锁同步,保证同意时间只有一个线程操函数
	synchronized public int addd(){
			num++;
			return num;
		}
	synchronized public int dell(){
			num--;
			return num;
		}
	//创建一个线程,实现加一
	class add implements Runnable{
		@Override
		public void run() {
			System.out.println(Thread.currentThread().getName()+"执行加一:"+addd());
		}
	}
	//创建一个线程用于减一
	 class del implements Runnable{
		@Override
		public void run() {
			System.out.println(Thread.currentThread().getName()+"执行减一:"+dell());
		}
	}

	 public static void main(String[] args) {
		 //创建对象
		Lx_04_jiajian lx=new Lx_04_jiajian();
		add a=lx.new add();
		del d=lx.new del();
		
		for(int i=0;i<2;i++){
		Thread t1=new Thread(a);
		t1.start();
		Thread t2=new Thread(d);
		t2.start();
		}
	}
}

结果:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值