package 对象及变量的并发访问2;
import 多线程技能1.Test;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
class MyServiceT2320{
public long i;
}
class MyThreadAT2320 extends Thread{
private MyServiceT2320 serviceT2320;
public MyThreadAT2320(MyServiceT2320 serviceT2320){
super();
this.serviceT2320=serviceT2320;
}
@Override
public void run() {
while (true){
serviceT2320.i=1;
}
}
}
class MyThreadBT2320 extends Thread{
private MyServiceT2320 serviceT2320;
public MyThreadBT2320(MyServiceT2320 myServiceT2320){
super();
this.serviceT2320=myServiceT2320;
}
@Override
public void run() {
while (true){
serviceT2320.i=-1;
}
}
}
class TestT2320{
public TestT2320() throws InterruptedException {
MyServiceT2320 myServiceT2320=new MyServiceT2320();
MyThreadAT2320 at2320=new MyThreadAT2320(myServiceT2320);
MyThreadBT2320 bt2320=new MyThreadBT2320(myServiceT2320);
at2320.start();
bt2320.start();
Thread.sleep(1000);
System.out.println("long i 二进制是:"+Long.toBinaryString(1));
System.out.println("long -1 二进制是:"+Long.toBinaryString(-1));
while (true){
long getValue=myServiceT2320.i;
if(getValue!=1&&getValue!=-1){
System.out.println("i的值是:"+Long.toBinaryString(getValue)+"十进制是:"+getValue);
System.exit(0);
}
}
}
}
class MyService2T2320{
volatile public long i ;
}
class MyThreadA2T2320 extends Thread{
private MyService2T2320 service2T2320;
public MyThreadA2T2320(MyService2T2320 service2T2320){
super();
this.service2T2320=service2T2320;
}
@Override
public void run() {
service2T2320.i=1;
}
}
class MyThreadB2T2320 extends Thread{
private MyService2T2320 service2T2320;
public MyThreadB2T2320(MyService2T2320 service2T2320){
super();
this.service2T2320=service2T2320;
}
@Override
public void run() {
service2T2320.i=-1;
}
}
class Test2T2320{
public Test2T2320() throws InterruptedException {
MyService2T2320 myService2T2320=new MyService2T2320();
MyThreadA2T2320 a2T2320=new MyThreadA2T2320(myService2T2320);
MyThreadB2T2320 b2T2320=new MyThreadB2T2320(myService2T2320);
a2T2320.start();
b2T2320.start();
Thread.sleep(1000);
System.out.println("long i 二进制是:"+Long.toBinaryString(1));
System.out.println("long -1 二进制是:"+Long.toBinaryString(-1));
while (true){
long getValue=myService2T2320.i;
if(getValue!=1&&getValue!=-1){
System.out.println("i的值是:"+Long.toBinaryString(getValue)+"十进制是:"+getValue);
System.exit(0);
}
}
}
}
class MyThread3T2320 extends Thread{
volatile public static int count;
private static void addCount(){
for (int i=0;i<100;i++){
count++;
}
System.out.println("count="+count);
}
@Override
public void run() {
addCount();
}
}
class MyThread32T2320 extends Thread{
volatile public static int count;
synchronized private static void addCount(){
for(int i=0;i<100;i++){
count++;
}
System.out.println("count="+count);
}
@Override
public void run() {
addCount();
}
}
class Run3T2320{
public Run3T2320(){
MyThread3T2320 [] myThread3T2320s=new MyThread3T2320[100];
for (int i=0;i<100;i++){
myThread3T2320s[i]=new MyThread3T2320();
}
for(int i=0;i<100;i++){
myThread3T2320s[i].start();
}
}
}
class Run32T2320{
public Run32T2320 (){
MyThread32T2320 [] myThread32T2320s=new MyThread32T2320[100];
for (int i=0;i<100;i++){
myThread32T2320s[i]=new MyThread32T2320();
}
for (int i=0;i<100;i++){
myThread32T2320s[i].start();
}
}
}
class addCountThreadT2320 extends Thread{
private AtomicInteger count=new AtomicInteger(0);
@Override
public void run() {
for (int i=0;i<10000;i++){
System.out.println(count.incrementAndGet());
}
}
}
class Run4T2320{
public Run4T2320(){
addCountThreadT2320 countThreadT2320=new addCountThreadT2320();
Thread thread=new Thread(countThreadT2320);
thread.start();
Thread thread1=new Thread(countThreadT2320);
thread1.start();
Thread thread2=new Thread(countThreadT2320);
thread2.start();
Thread thread3=new Thread(countThreadT2320);
thread3.start();
Thread thread4=new Thread(countThreadT2320);
thread4.start();
}
}
class MyService5T2320{
public static AtomicLong aiRef=new AtomicLong();
public synchronized void addNum(){
System.out.println(Thread.currentThread().getName()+"100后"+aiRef.addAndGet(100));
aiRef.addAndGet(1);
}
}
class MyThread5T2320 extends Thread{
private MyService5T2320 service5T2320;
public MyThread5T2320(MyService5T2320 service5T2320){
super();
this.service5T2320=service5T2320;
}
@Override
public void run() {
service5T2320.addNum();
}
}
class Run5T2320{
public Run5T2320(){
try {
MyService5T2320 service5T2320=new MyService5T2320();
MyThread5T2320 [] myThread5T2320s=new MyThread5T2320[5];
for (int i=0;i<myThread5T2320s.length;i++){
myThread5T2320s[i]=new MyThread5T2320(service5T2320);
}
for (int i=0;i<myThread5T2320s.length;i++){
myThread5T2320s[i].start();
}
Thread.sleep(1000);
System.out.println(MyService5T2320.aiRef.get());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class T2320 {
public static void main(String[] args) throws InterruptedException {
Run5T2320 run5T2320=new Run5T2320();
}
}
